中易网

一个关于C语言的问题

答案:3  悬赏:20  
解决时间 2021-04-28 08:55
  • 提问者网友:南佳人~
  • 2021-04-27 10:14
下面程序的输出是_____9_。
long fun5(int n)
{long s;
if((n == 1)||(n == 2)) s=2;
else s=n+fun5( n-1);
return(s);}
main() {long x; x=fun5(4); printf("%ld\n",x);}为什么是9呢?
最佳答案
  • 二级知识专家网友:心痛成瘾
  • 2021-04-27 11:24

1.fun5()这个函数是递归函数。


2.当n>3时,s=n+fun5(n-1);此时n=4,得①s=4+3+fun5(2)。


3.当n<3时,s=2;所以此时得②fun5(2)=2。


4.由①和②得到结果③s=4+3+2=9。


所以输出为9.

全部回答
  • 1楼网友:何以畏孤独
  • 2021-04-27 12:03

这是个递归函数。

main函数中调用fun5(4),在fun5(4)执行过程中又调用fun5(3),在fun5(3)执行过程中又调用fun5(2),最终的表达式应该是:x=fun5(4)=(4+fun5(3))=(4+3+fun5(2))=(4+3+2)=9

  • 2楼网友:萌萌哒小可爱
  • 2021-04-27 11:34
函数运行过程: x=fun5(4);进入函数 n=4  运行 4+fun5(3) n= 3 运行 3+fun(2) n = 2 运行 s=2; 一步步的回代   即:fun5(4) = 4+fun5(3) =4+(3+fun(2)) = 4+(3+2) = 4 + 5 = 9
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息