怎么自写递归

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)