设有如下函数定义:  #include<stdio.h>  int fun(int k)  { if(k<1)return 0;   else if(k==1)return 1;   else return fun(k-1)+1;  }  若执行

admin2022-10-24  36

问题 设有如下函数定义:
 #include<stdio.h>
 int fun(int k)
 {  if(k<1)return 0;
    else if(k==1)return 1;
    else return fun(k-1)+1;
 }
 若执行调用语句“n=fun(3) ”;,则函数fun总共被调用的次数是(          )。

选项 A、2
B、3
C、4
D、5

答案B

解析 执行调用语句“n=fun(3);”,3被当作实参传递进去,进行了一次调用。3被当作实参传进去后,程序会执行“else return fun(k-1)+1;”,函数被调用了第2次,参数是3-1,也就是2。2被当作实参传进去后,程序会执行“else return fun(k-1)+l;”,函数被调用了第3次,参数是2-1,也就是1。1被当作实参传进去后,程序会执行“else if(k==1)return 1;”,函数不再被递归调用。所以最终结果为3次。故本题答案为B选项。
转载请注明原文地址:https://kaotiyun.com/show/vWkp777K
0

最新回复(0)