首页 > 试题广场 >

当n=6时,下列函数的返回值是:() int foo(int

[单选题]
当n=6时,下列函数的返回值是()
int foo(int n){
    if(n < 2)
        return n;
    return foo(n-1)+foo(n-2);
}
  • 5
  • 7
  • 8
  • 10
画的有点丑 勿怪😁
发表于 2020-08-09 20:59:09 回复(1)
                                                            foo(5)        +          foo(4)
                                                  foo(4) + foo(3)    +    foo(3)+ foo(2) 
                      foo(3) + foo(2) +foo(2) + foo(1)     +   foo(2) + foo(1)  +  foo(1)+foo(0)
foo(2) + foo(1)+foo(1) +foo(0)+foo(1) +foo(1)   +   foo(1) +  foo(1) + foo(1)
               foo(1) + foo(1)+foo(1)+foo(1) +foo(1)  +  foo(1) +  foo(1) + foo(1)
              8个1相加


发表于 2019-08-27 14:23:19 回复(2)
斐波那契数列
发表于 2021-12-13 18:34:22 回复(0)
发表于 2023-04-29 15:51:13 回复(0)
1:5+4
2:(4+3)+(3+2)
3:[(3+1)+(2+1)]+[(2+1)+(1+0)]
4:[(2+1)+1+(1+0)+1]+[(1+0)+1+1]
5:[(1+0)+1+1+1+1]+[1+1+1]=8
发表于 2021-10-11 09:26:26 回复(0)
反着推,倒数第一项,n=1,返回值为1;n=2时,返回值是1;n=3时,返回值是f(2)+f(1)直接带进去,得2,依次类推,n=4是3+2返回值为3;5,8。于是斐波那契数列就安排上了
发表于 2022-07-13 22:34:32 回复(0)

当n=6时,调用函数foo(6),根据递归的定义,会进一步调用foo(5)和foo(4)。

对于foo(5),又会继续调用foo(4)和foo(3)。

对于foo(4),再次调用foo(3)和foo(2)。

对于foo(3),会调用foo(2)和foo(1)。

现在,我们可以计算出以下调用的返回值:

foo(2) = 2 foo(1) = 1

接下来,我们可以通过逐步计算返回值来找到foo(6)的值。

发表于 2023-10-30 14:35:26 回复(0)
发表于 2023-11-17 20:12:59 回复(1)
这明显是二叉树,可以先算foo(n-1)那条路,6减完剩1返回,同理5 4 3 2,那么这里就返回5个1,而另一条路则只有5 3 1 减到最后返回1,三个1,那么加起来就是8
发表于 2023-03-20 19:15:33 回复(0)
画个二叉树就行了,数值为1的叶子节点
发表于 2022-10-31 10:23:42 回复(0)
1:5+4 2:(4+3)+(3+2) 3:[(3+1)+(2+1)]+[(2+1)+(1+0)] 4:[(2+1)+1+(1+0)+1]+[(1+0)+1+1] 5:[(1+0)+1+1+1+1]+[1+1+1]=8
发表于 2021-11-04 09:53:40 回复(0)
递归数,画图,即可
发表于 2021-08-30 23:01:35 回复(0)
就是个斐波那契数列
发表于 2021-03-04 00:06:35 回复(0)
题目是差一个else么?
发表于 2021-03-02 18:59:05 回复(0)
<p>1 1 2 3 5 8 13……</p>
发表于 2020-09-01 19:01:49 回复(0)
c
发表于 2019-02-27 13:04:19 回复(0)
5加3
发表于 2019-01-27 22:19:37 回复(0)