有以下程序 int f(int n) { if (n==l) return 1; else return f(n-1)+1; } main () { int i,j=0; f

admin2013-02-23  23

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

答案2

解析 本题考查的知识点是递归函数.通过分析不难写出,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正确。
转载请注明原文地址:https://kaotiyun.com/show/AePp777K
0

最新回复(0)