读书人

哪位帮解释一下这个小程序!多谢

发布时间: 2012-04-01 17:23:46 作者: rapoo

哪位帮解释一下这个小程序!谢谢!
下面的程序的输入是 8 ,请问哪位能帮解释一下为什么么?先谢谢了!
fun(int k,int *p)
{
int a,b;
if(k == 1 || k == 2)
*p = 1;
else
{
fun(k - 1,&a);
fun(k - 2,&b);
*p = a + b;
}
}

main()
{
int x;
fun(6,&x);
printf( "%d\n ",x);
}

[解决办法]
Fibonacci数列
1 1
2 1
3 *p(1)+*P(2)
.
.
.
依次递推
[解决办法]
递归求6的Fibonacci数列的值吧
[解决办法]
值-》和
[解决办法]
1,1,2,3,5,8
[解决办法]
Fibonacci数
[解决办法]
楼主应该是在学递归吧~~ 不妨看看下面一个更简单易懂的:

int fabonacci(int num){
if(num == 1 | num == 2) return 1;
else return fabonacci(num-1)+fabonacci(num-2);
}

试这计算fabonnaci(6),看看是不是也是8 ...
思路是一样的,只是实现的过程不一样罢了~~

[解决办法]
不要看递归了,怪难懂的,fabonacci非递归法:

void main()
{
int i=1;
int j=1;
int n;
cin> > n;
for(int k=0;k <n;k++)
{
i=i+j;
j=i+j;
cout < <i < < " " < <j < <endl;
}
}
[解决办法]
fabonacci。。。

读书人网 >C语言

热点推荐