递归...........

来源:百度知道 编辑:UC知道 时间:2024/09/25 13:25:08
#include<stdio.h>

int fun(int n)
{
if(n==1 || n==2)
return 1;
else
return fun(n-1)+fun(n-2);
}

void main()
{
int n=10;
printf("%d\n",fun(n));
}

求这个递归运行的详细步骤....

看了半天都不懂...

就是简单的递归,你可以用VC Debug跟踪,可以看堆栈就一目了然啦

运行fun(10)时,if条件不满足运行else
运行fun(9)+fun(8),if条件不满足运行else,先运行fun(9),同理,又会递归调用
fun(8)+fun(7);直到n=3时,return fun(2)+fun(1)=2;
fun(8)也是一样的

“斐波那契数列”
1 1 2 3 5 8 13 21 ……
如果n==1或者n==2返回1也就是数列的钱两项都是1,
否则的话,返回数列前两项的和