有以下程序:
#include 〈iestream〉
using namespace std;
int f(int n)
if(n==1)
return 1;
else
return f(n-1)+1;
int main()
int i,j=0;
for(i=1;i<3;i++)
j+=f(i);
cout<
上述程序运行后的输出结果是( )。
A.4
B.3
C.2
D.1
参考答案:B
解析: 本题考查的知识点是递归函数的调用。根据程序代码逐步分析:
①f(n)用来计算n+(n-1)…+1,在f(n)定义内部又调用f(n)自身,这就是递归函数。
②f(n)=f(n-1)+1,因此必须先计算出f(n-1),而f(n-1)=f(n-2)+1,又必须计算f(n-2)。
由此类推,直到n=1,返回后可以此计算出f(n),f(n-1),…f(1)。
③第1次调用f(n)时,形参n接收的值为1,进入函数体后,由于满足“n==1”,执行return语句得到1。第2次调用f(n)时,n的值为2,不满足条件“n==1”,执行 return f(n-1)+1,在这条语句中又调用f(n-1)即f(1),从而得到f(2)的返回值为2。所以j=1+2=3。