A-A+
有以下程序: #include 〈iestream〉 using namespace std
问题详情
有以下程序: #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$amp;
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”,执行returnf(n-1)+1,在这条语句中又调用f(n-1)即f(1),从而得到f(2)的返回值为2。所以j=1+2=3。