C语言编程问题
答案:6 悬赏:20 手机版
解决时间 2021-11-18 03:21
- 提问者网友:我是女神我骄傲
- 2021-11-17 03:02
C语言编程问题
最佳答案
- 五星知识达人网友:孤独入客枕
- 2021-11-17 03:42
case 1:case 2:return 1;
当g=1或2时,返回1
return(fib(g-1)+fib(g-2));
递归调用
参数g值的变化:
7
6 5
5 4 4 3
4 3 3 2 3 2 2 1
3 2 2 1 2 1 1 2 1 1 1
2 11 1 1 1
1
再将1相加,得出结果
当g=1或2时,返回1
return(fib(g-1)+fib(g-2));
递归调用
参数g值的变化:
7
6 5
5 4 4 3
4 3 3 2 3 2 2 1
3 2 2 1 2 1 1 2 1 1 1
2 11 1 1 1
1
再将1相加,得出结果
全部回答
- 1楼网友:神鬼未生
- 2021-11-17 08:25
这是递归,直到值为0和1为止。
- 2楼网友:平生事
- 2021-11-17 07:23
g的值-1,然后调用fib函数;g的值-2,调用fib函数;两个结果相加,返回这个值
- 3楼网友:孤独的牧羊人
- 2021-11-17 06:49
0,1,1,2,3,5,8....
斐波那契数列
这就是一个递归的过程.随便看一本书都有.三言两语也说不清.
斐波那契数列
这就是一个递归的过程.随便看一本书都有.三言两语也说不清.
- 4楼网友:一袍清酒付
- 2021-11-17 05:48
long fib(int g)是个递归函数,
主函数调用k=fib(7);此时g是7,不满足switch分支结构的执行条件,就执行了return(fib(g-1)+fib(g-2));语句也即return(fib(6)+fib(5));
由于此时fib(6)和fib(5)此时还不是确切的数值,所以会再次调用fib()函数,执行fib(6),由于此时g=6,仍不满足switch分支结构的执行条件,就执行了return(fib(g-1)+fib(g-2));语句也即return(fib(5)+fib(4));由于此时fib(5)和fib(4)此时还不是确切的数值,所以会再次调用fib()函数,以此类推,直到调用fib(2)、fib(1)时返回1;或调用fib(0)时返回0;此时函数会将嵌套调用函数返回的数值相加,得到最终结果:13
主函数调用k=fib(7);此时g是7,不满足switch分支结构的执行条件,就执行了return(fib(g-1)+fib(g-2));语句也即return(fib(6)+fib(5));
由于此时fib(6)和fib(5)此时还不是确切的数值,所以会再次调用fib()函数,执行fib(6),由于此时g=6,仍不满足switch分支结构的执行条件,就执行了return(fib(g-1)+fib(g-2));语句也即return(fib(5)+fib(4));由于此时fib(5)和fib(4)此时还不是确切的数值,所以会再次调用fib()函数,以此类推,直到调用fib(2)、fib(1)时返回1;或调用fib(0)时返回0;此时函数会将嵌套调用函数返回的数值相加,得到最终结果:13
- 5楼网友:动情书生
- 2021-11-17 04:13
递归调用
你可以这样想
int s;
s=fib(g-1)+fib(g-2);
return s;
case 1:case 2:return 1;
这个你可以把它列开
case 1:
case 2:
return 1;
因为switch语句里的case不加break就继续往下执行 所以当取1时执行case 1:执行case 1然后继续执行case 2
取2 的话就执行case 2
你可以这样想
int s;
s=fib(g-1)+fib(g-2);
return s;
case 1:case 2:return 1;
这个你可以把它列开
case 1:
case 2:
return 1;
因为switch语句里的case不加break就继续往下执行 所以当取1时执行case 1:执行case 1然后继续执行case 2
取2 的话就执行case 2
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯