问题 单项选择题

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

main()
int i,j=0;
for(i=1;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并把它加到j中,j的值为3。所以最后输出的j的值为3。

选择题
多项选择题