问题 单项选择题

有以下程序:
int fun(int n)
if(n==1)return 1;
else
return(n+fun(n-1));

main()
int x;
scanf("%d", &x); x=fun(x); printf("%d\n", X);

执行程序时,给变量X输入10,程序的输出结果是( )。

A.5S

B.S4

C.65

D.45

答案

参考答案:A

解析: 本题考查的是递归算法的分析。一个直接或间接地调用自身的算法称为递归算法。在一个递归算法中,至少要包含一个初始值和一个递归关系。本题的fun()函数在n等于1时返回1,而在其余情况下返回n+fun(n-1),所以本题的递归算法可以这样来表示:
fun(n)=1(n=1)(初始值)
fun(n)=n+fun(n-1)(n≠1)(递归关系)
此时不难看出,该递归算法实现的是计算1+2+3+…+n,而且n必须大于0,否则会陷入死循环。故题目输出的结果是1+2+3+…+10=55,应该选择A)。

解答题
单项选择题