n";
*p=f1+f2;}
}
main()
{int s;stdio,f2;
if(n==1||n==2)
*p=1;
printf("%d\
fun(3.h>
void fun (int n,int *p)
{int f1,&f1);
fun(n-2,&f2);
else {fun(n-1#include <,&s)
求教C语言高手一个问题哈求详解哦
答案:4 悬赏:80
解决时间 2021-11-16 05:36
- 提问者网友:喜遇你
- 2021-11-15 06:44
最佳答案
- 二级知识专家网友:陪我到地狱流浪
- 2021-11-15 08:22
执行if语句,得到&f1=1;
继续执行fun(n-2,&f2);n=1,得到&f2=1直接看fun()函数
n=3,由判断语句可知 执行else语句
else {fun(n-1,&f1);
fun(n-2,这时n=2,&f2);
*p=f1+f2;}
}
然后执行fun(n-1,&f1); n变成2,再执行fun()函数
继续执行fun(n-2,&f2);n=1,得到&f2=1直接看fun()函数
n=3,由判断语句可知 执行else语句
else {fun(n-1,&f1);
fun(n-2,这时n=2,&f2);
*p=f1+f2;}
}
然后执行fun(n-1,&f1); n变成2,再执行fun()函数
全部回答
- 1楼网友:哥在撩妹请勿打扰
- 2021-11-15 10:23
这个是错误的!
- 2楼网友:ー何必说爱
- 2021-11-15 09:53
如果 n = 1 或者2 返回1, 否则调用f(n-1, &f1), 你这里n = 3, 调用一次f(2, &f1) f1 = 1, 再调一次f(1, &f2), 所以p = f1 + f2 = 2; 即s = 2;
- 3楼网友:都不是誰的誰
- 2021-11-15 09:24
void fun (int n,int *p)其实是个递归调用,你懂什么叫递归调用吗?
fun(n-1,&f1)这里就是重复调用fun()函数,然后将值赋给f1,和f2。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯