问题
单项选择题
有以下程序: int f(int n) { if (n==1) 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=l; f(n)=f(-1)+1 n≠1; 在主函数中for循环执行了两次函数调用f(i)。第一次:i为1,调用f(1)得到返回值1,并把它加到j中,j的值为1。第二次i为2,调用f(n),根据递归公式可知f(2)=f(1)+1,得到返回值2并把它加到j中,j的值为3。所以最后输出,i的值为3。