int fun(int n) {if(n==1)return 1; else return(n+fun(n-1)); } main() { int x; scanf("%d",x); x=fun(x

2024-12-18 18:44:10
推荐回答(5个)
回答1:

第一次进入:x==10,因为x!=1,执行else return(n+fun(n-1)); 语句,返回10+fun(10-1)即10+fun(9)
第二次进入:x==9,因为x!=1,执行else return(n+fun(n-1)); 语句,返回10+9+fun(9-1)即10+9+fun(8)
.....
....

第九次进入:x==2,因为x!=1,执行else return(n+fun(n-1)); 语句,返回10+9+8+7+6+5+4+3+2+fun(2-1)即10+9+8+7+6+5+4+3+2+fun(1)
第十次进入:x==1,因为x==1,执行return 1; 语句,返回10+9+8+7+6+5+4+3+2+1。
事实上是求1+...+10的和。
结果应该是55.

回答2:

大哥,问问题的时候也负责点好不,要不指望谁给你认真回答。

你到底想问啥?

回答3:

正确答案: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。

回答4:

10

回答5:

简单的递归函数啊,有什么看不明白的呢。