单选题
有以下程序
#include <stdio.h>
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
【答案解析】[解析] 本题考查的是递归算法的分析。一个直接或间接地调用自身的算法称为递归算法。在一个递归算法中,至少要包含一个初始值和一个递归关系。本题的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。