真不好意思, 错怪了楼主, 这道题目的确不是很容易.
复制内容到剪贴板
代码:
#include <stdio.h>
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;
}
}
void main ()
{
int x;
fun (6,&x);
printf("%d\n",x);
}里面有个递归,也有指针,这个题目很折腾人
我的思路不太成熟, lz仅供参考
运行
fun 6
然后有两个递归
fun 5
fun 4
同样的思路, 一层一层地往下解,直到出现1 或者2
fun 6
fun 5
fun 4
fun 3
fun 2
fun 1
fun 2
fun 3
fun 2
fun 1
fun 4
fun 3
fun 2
fun 1
fun 2
到1和2时就可以得到结果1, 然后一层一层地往上加
fun 5
5
fun 4
3
fun 3
2
fun 2
1
fun 1
1
fun 2
1
fun 3
2
fun 2
1
fun 1
1
fun 4
3
fun 3
2
fun 2
1
fun 1
1
fun 2
1
最后fun 4+fun 5=3 + 5 = 8
递归的题目貌似应该用堆栈的思想来理解, 我的表达也许不大清楚, 希望楼主能参考一下, 顺便表达一下我的歉意