首页 > 试题广场 >

对于以下递归函数f,调用f(4),其返回值为()

[单选题]
对于以下递归函数f,调用f(4),其返回值为()
int f(int n){
    if (n) 
        return f(n-1)+n;
    else 
        return n;
}


  • 10
  • 4
  • 0
  • 以上均不是
推荐
选A
【分析】

递归调用到没有创建新的递归函数为止,即递归到f(0),递归过程如下,最后返回值为10。

编辑于 2019-05-20 14:03:42 回复(0)
选A
根据题目当实参n为4时,return f(3)+4;
继续递归:
f(3)return f(2)+3;
f(2),return f(1)+2;
f(1),return f(0)+1;
f(0),return 0;

综上推理:f(4)=0+1+2+3+4=10;
编辑于 2019-05-19 06:03:46 回复(0)
A
0+1+2+3+4=10
发表于 2019-05-18 21:15:35 回复(0)
f(4)=f(3)+4=f(2)+3+4=f(1)+2+3+4=f(0)+1+2+3+4=1
所以本题选择A项

发表于 2020-06-18 10:42:37 回复(0)
个人觉得选A,因为if一个非0的值,其结果为真故执行第一个return,也就是return f(3)+4,以此类推。。。。直到return f(0)+1,当n=0的时候执行第二个return语句即n=0。这道题的意思就是问你4+3+2+1+0等于多少的问题。
发表于 2019-05-19 16:51:30 回复(0)
因为第一轮循环都不止4了,排除法选A😕
编辑于 2019-05-18 23:20:17 回复(0)
显然选A,n不为0,条件就是真,f(4)=f(3)+4=f(2)+3+4=f(1)+2+3+4=f(0)+1+2+3+4=10
发表于 2019-05-17 15:49:52 回复(0)
选A,
发表于 2019-05-17 15:39:10 回复(0)
A
发表于 2017-03-11 11:07:47 回复(0)