设有如下函数定义
#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呢?
C语言 函数内部调用
答案:3 悬赏:60 手机版
解决时间 2021-03-31 14:06
- 提问者网友:流星是天使的眼泪
- 2021-03-31 02:21
最佳答案
- 五星知识达人网友:雪起风沙痕
- 2019-10-05 13:02
n = fun(3)
|
\/
n = fun(fun(2))
|
\/
n = fun(fun(fun(1)))
到1的时候就return,不继续往下调用了,所以就是3次啊。
|
\/
n = fun(fun(2))
|
\/
n = fun(fun(fun(1)))
到1的时候就return,不继续往下调用了,所以就是3次啊。
全部回答
- 1楼网友:七十二街
- 2021-01-07 09:53
第一次k=3,调用else return fun(k-1)+1;第二次k=2,在调用else return fun(k-1)+1;第三次k=1,在调用 else if(k==1) return 1:然后就没了。
- 2楼网友:冷風如刀
- 2020-01-31 02:19
sum就是一个累加和,估计lz困惑的应该是关于func的调用,func就是一个递归调用。他把求阶乘的方法用递归实现,即n!= n*(n-1)!,因此就有了if语句,当n=0的时候,让函数返回1,这样就递归循环上去了,每次返回的都是(n-1)!的值,可以结合函数递归体会一下
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯