有以下程序:
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)。