作业帮 > 综合 > 作业

#include"stdio.h" fun(int k,int *p) {int a,b;if(k==1||k==2)*

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 20:05:24
#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
#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;
}
}
main()
{int x;
fun(6,&x);
printf("%d\n",x);
}执行结果是什么?
执行结果是8呗!
再问: 高手,怎么算的?
再答: 其实就是一个递归的过程。 首先k会持续递减到2,再递增至6,由于*p的值是a+b,所以其保存的只是最后一次 fun(k-1,&a); //6-1=5 fun(k-2,&b); //5-2=3 计算出的a=5,b=3累加后得到的和8。