fib()问题,下面的哪位大神给解个惑

fib()问题,下面的哪位大神给解个惑,第1张

函数是if判断语句,根据函数fib( )的定义,根据n的取值可以分为4种情况:

第一种 n=0,那么函数返回33;

第二种 n=1,那么函数返回66;

第三种 n>1,那么函数返回fib(n-1)+fib(n-2)+fib(n-3),就是继续返回函数分别计算;

第四种 其他情况,即n<0的情况,那么函数返回森裂99。

根据提问,第三种情况比较特殊,假谈春敏如说n=含枝2的话,那么函数返回fib(1)+fib(0)+fib(-1),正好是所有情况全部覆盖了。

所以答案是A,1。

你的程序写错了,return(fib(n-1)+fib(n-2)忘记了一个),改为return(fib(n-1)+fib(n-2)),程序就没错误了。

程序的运行结果为:16

代枯余码解释如下:

fib()函数是个递归函数,实现如下功没轮滚能:当参数n>2时,将n赋值为n-1,和n-2返回,直到n<=2停止,像主函数里面的fib(6),先返回fib(5)+fib(4)然后继桐肢续执行fib()函数,fib(4)+fib(3)+fib(3)+2;然后继续执行fib()函数返回【fib(3)+2】+【2+2】+【2+2】+2,然后继续执行fib()函数返回:{【2+2】+2}+【2+2】+【2+2】+2,然后结束将结果输出。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12292194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存