永发信息网

C语言 函数内部调用

答案:3  悬赏:60  手机版
解决时间 2021-03-31 14:06
  • 提问者网友:流星是天使的眼泪
  • 2021-03-31 02:21
设有如下函数定义
#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呢?
最佳答案
  • 五星知识达人网友:雪起风沙痕
  • 2019-10-05 13:02
n = fun(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)!的值,可以结合函数递归体会一下
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯