问题
单项选择题
有以下程序
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正确。