有以下程序: #include 〈iestream〉 using namespace std; int f(int n) { if(n==1) return 1; else

admin2013-05-30  20

问题 有以下程序:    #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

答案2

解析 本题考查的知识点是递归函数的调用。根据程序代码逐步分析:
   ①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。
转载请注明原文地址:https://kaotiyun.com/show/VLNp777K
0

最新回复(0)