设有如下函数定义
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
解析:根据else的就近原则,把代码整理之后结果如下: if(k<1) return 0; else { if(k==1) return 1; else return fun(k-1)+1; } k=3时,k<1为假,k==1为假,执行return fun(2)+1。 k=2时,k<1为假,k==1为假,执行return fun(1)+1。 k=1时,k<1为假,k==1为真,return 1,返回fun(2),返回fun(3)。所以一共调用了3次,因此选B。