[求助]为什么结果是8?
为什么结果是8啊?
麻烦讲解一下.
#include <stdio.h>
void main()
{
void fun(int k,int *p);
int x;
fun(6,&x);
printf("%d\n",x);
}
void 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;
}
}
搜索更多相关的解决方案:
结果
----------------解决方案--------------------------------------------------------
楼主单步运行看看,貌似最后应该A=5,B=3,相加为8
----------------解决方案--------------------------------------------------------
fun(k-1,&a);//这句执行K=6-1=5;
fun(k-2,&b);//这句执行K=5-2=3;
主要是K值函数的返回值变化所致。
----------------解决方案--------------------------------------------------------
啊,,要是 人脑去 调试的话..头都大了...
楼主可以,用VC 6.0 单步调试一下...
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void main()
{
void fun(int k,int *p);
int x;
fun(6,&x);
printf("%d\n",x);
}
void fun(int k,int *p)
{
int a,b;
if(k==1||k==2)
*p=1;// 应该是 *p=k;
else
{
fun(k-1,&a);
fun(k-2,&b);
*p=a+b;
}
}
----------------解决方案--------------------------------------------------------
lz你的代码意思是
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) (n>=3)
这样递推下去
f(3)=f(1)+f(2)=2
f(4)=f(3)+f(2)=3
f(5)=f(4)+f(3)=5
f(6)=f(5)+f(4)=8!!->答案
----------------解决方案--------------------------------------------------------
这样的问题你可以先用VC6调试一下就知道了,然后再来问啊
----------------解决方案--------------------------------------------------------
人脑调试有点晕```
----------------解决方案--------------------------------------------------------
LS太丑了,强烈抗议
----------------解决方案--------------------------------------------------------