问题 单项选择题

有以下程序
int f(int n)

if (n==l) return 1;
else return f(n-1)+1;

main ()

int i,j=0;
for(i=i;i<3;i++) j+=f(i);
printf "%d\n", j );

程序运行后的输出结果是

A.4

B.3

C.2

D.1

答案

参考答案:B

解析: 本题考查的知识点是递归函数.通过分析不难写出,f()函数的数学表达式为:
f(n)=1 n=1;
f(n)=f(n-1)+1 n不等于1;
在主函数中for循环执行了两次函数调用f(i)。第一次:i为1,调用f(1)得到返回值1,并把它加到 i中,i的值为1。第二次i为2,调用f(n),根据递归公式可知“f(2)=f(1)+1”,得到返回值2并把它加到i中,j的值为3。所以最后输出的j的值为3,所以4个选项中B正确。

选择题
单项选择题