1.如何建立递归的思想
如果一个结点A有左孩子B或右孩子C,则生成新的结点B或结点C;并保存和结点A 的父子关系;
如果B或C不存在,即你说的b=0,那就返回到结点A的父结点O;
假设A是O的左孩子,返回O后,继续处理O的右孩子;处理完了,再回到O的父结点;依此类推
如图,处理到H;H没有孩子,就要返回到D;D没有右孩子,继续返回到B;处理B的右孩子;
返回操作是由递归来完成的;
就像一个大人,让一个孩子去做一件事;做完了,必须告诉大人;然后,这个大人再让另一个孩子去做另一件事;而这需要第一个孩子告诉大人,他的完成情况大人知道以后,才会让另一个孩子去做另一件事。
2.VHDL如何实现递归算法
斐波那契数列的递归实现如下
#include
int fbnc(int n)
{
if (n == 1 || n ==2)
{
return 1;
}
if (n > 2)
{
return fbnc(n - 1) + fbnc(n - 2);
}
}
void main()
{
int n;
scanf("%d",&n);//输入第n个数
printf("%d\n",fbnc(n));//输出第n个数对应的值
}
3.平时递归用的多吗
写递归你需要先找到递归的递归条件和终结条件。
递归的基本规则可以解释为:
如果条件为继续递归
为条件做一定变换后调用自身
否则
返回基本值
当然,可能会出现更复杂的,但一般都是这样。所以需要找到三个地方:
第一、就是在什么条件下要继续递归,在什么条件下结束递归。
第二、递归时需要做什么变换才能让递归函数最终走到终结条件。
第三、基本值是什么。
比如递归计算N。我们知道函数基本写作
int func(int n)
{
if(n >1)
return n * func(n - 1);
else
return 1;
}针对这个函数,三点就是:
第一、递归条件就是只要n不等于1,则递归继续,否则递归终结。
第二、递归变换就是n-1。
第三、终结时,基本值是1。
更复杂的递归也是符合这些条件的,只不过可能不止一种变换或不止一种终结条件等等。
哦
4.怎么样用递归的方法来实现十进制转换成二进制
#include <stdio.h>
void dtob(unsigned int num);
void dtob(unsigned int num)
{
if(num > 1)
{
dtob(num / 2);
printf("%d",num % 2);
}
else if(num = 1)
{
printf("1");
}
else if(num = 0)
{
printf("0");
}
}
int main(void)
{
unsigned int num;
printf("请输入一个正整数 :");
scanf("%u",&num);
printf("十进制整数%d转换为二进制为:",num);
dtob(num);
return 0;
}
5.c语言中程序“1
这是.net里面的递归
c里没用过
public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i - 2);
}
}
6.java中的递归方法是怎么样的
public int sum(int number){
if(number == 1){
return 1;
}else{
return number+ sum(number-1);
}
}
---------------------------------------
这个就是最简单的递归调用求和:以此类推既可以。
例如:
sum(4);
4 + sum(3);
-----3 + sum(2)
----------2 + sum(1);
---------------1;
7.如何使用递归的方法获得指定文件夹下某个指定文件的完整路径
我自己写的一个递归 希望对你有忙住:
public void findFolder(String str){
File file=new File(str);//传入一个目录用file包装成文件对象
if(file.isDirectory()){//判断是否是一个文件夹目录
File [] listFile=file.listFiles();//获得文件夹下所有的文件或文件夹
for (int i = 0; i < listFile.length; i++) {
if(listFile[i].isDirectory()){//以此判断每个文件看是否是子文件夹
String strpath=listFile[i].getPath();//得到子文件夹的目录
findFolder(strpath);//递归调用
System.out.println(listFile[i].getName());//文件夹下面的所有文件夹
}else{
System.out.println(listFile[i].getName());//文件夹下面所有的文件
}
System.out.println(listFile[i].getName());//文件夹下面的所有文件和文件夹
}
}
}