永发信息网

有以下C语言程序,程序的输出结果是什么?请写出详细的执行过程。

答案:3  悬赏:0  手机版
解决时间 2021-03-12 16:21
  • 提问者网友:寂寞撕碎了回忆
  • 2021-03-12 12:20
有以下C语言程序
#include
long fib(int n)
{ if(n>2) return(fib(n-1)+fib(n-2);
else return(2);
}
main()
{ printf("%ld\n",fib(6));
}
程序的输出结果是什么?请写出程序的执行过程。
最佳答案
  • 五星知识达人网友:蕴藏春秋
  • 2021-03-12 13:32
你的程序写错了,return(fib(n-1)+fib(n-2)忘记了一个),改为return(fib(n-1)+fib(n-2)),程序就没错误了。
程序的运行结果为:16
代码解释如下:
fib()函数是个递归函数,实现如下功能:当参数n>2时,将n赋值为n-1,和n-2返回,直到n<=2停止,像主函数里面的fib(6),先返回fib(5)+fib(4);然后继续执行fib()函数,fib(4)+fib(3)+fib(3)+2;然后继续执行fib()函数返回【fib(3)+2】+【2+2】+【2+2】+2,然后继续执行fib()函数返回:{【2+2】+2}+【2+2】+【2+2】+2,然后结束将结果输出。
全部回答
  • 1楼网友:几近狂妄
  • 2021-03-12 15:03

sub(x)为宏定义:(x)-(x) 调用时(x)-(x)直接替换sub(x)

计算过程是:

a=4 b=6 c=7

d=sub(a+b)*c = (a+b)-(a+b)*c = (4+6)-(4+6)*7=-60

最后输出结果为:

d=-60 (换行)

^_______^

  • 2楼网友:山河有幸埋战骨
  • 2021-03-12 14:24
fib(6)=fib(5)+fib(4)=fib(4)+fib(3)+fib(3)+fib(2)=fib(3)+fib(2)+2*(fib(2)+fib(1))+2=fib(2)+fib(1)+2+2*(2+2)+2=2+2+2+8+2=16
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯