#include <stdio.h>
#include <conio.h>
fun(int k,int *p)
{
int a,b,i=1,j=1;
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);
getch();
}
我懂得简单的递归原理,例如求阶乘这类,因为它每次只调用一次自己.例如
fun(int k)
{
if(k==1)
s=1;
s=fun(k-1);
return s;
这样简单易懂,但上面那个函数,出现了两个递归调用,我就昏了,不知道他们是怎样去工作的,麻烦谁来讲解一下!??过几天就要考等级试了,我怕碰上这种题会丢分!
參考答案:这应该是个类似fibonacci求某项址
此类似fibonacci数列
a1=1,a2=1,a3=a1+a2=2,a4=a2+a3=3,a5=a4+a3=5
以此类推
比如你已开始fun(6,&x);
就是求a6
所以它先求
fun(6)= fun(5) + fun(4)
a6 = a5 + a4
以此类推
如果还有问题
可以发消息问我