int f(int n) {if(n) return f(n-1)+n; else return n; }这个递归函数,调用f(4),它的返回值是多少?

坐等高手解答

第1个回答  2012-07-16
f(4)=f(3)+4
=f(2)+3+4
=f(1)+2+3+4
=f(0)+1+2+3+4
=0+1+2+3+4
=10本回答被提问者采纳
第2个回答  2016-01-09
正确答案:A
本题主要考查函数的递归调用。在做递归调用函数类型的题目时,我们首先要找到函数的出口和递归结束的条件。
在本题中,程序首先定义了一个fun函数,函数的形参是一个整型变量n,从后面的程序可以看出,该函数是一个递归函数。在函数体中,首先执行条件判断语句,如果条件结果为真,说明变量n为1,此时返回1,这是递归函数的出口;否则返回函数的递归调用。
在主函数中,定义一个变量x,并试图通过键盘输入的方式为变量x赋初值,然后调用fun函数,并用x作为其形参,用x保存最后的运行结果输出。
变量x的初值为10,从上面的分析我们知道,递归调用的出口是n=1,而每递归一次n的值减1,因此,函数fun递归调用了9次,其运算相当于10+9+8+7+6+5+4+3+2+1=55。因此,程序最终的输出结果是55。
第3个回答  2012-07-16
10
第4个回答  2012-07-16
10追问

为什么呢?

追答

f(n)= f(n-1)+n n>0
0 n=0

f(4)=4+3+2+1+0=10

第5个回答  2012-07-16
zison8835追问

你以为你很幽默?