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

来源:百度知道 编辑:UC知道 时间:2024/06/25 01:44:56
有以下C语言程序
#include<stdio.h>
long fib(int n)
{ if(n>2) return(fib(n-1)+fib(n-2);
else return(2);
}
main()
{ printf("%ld\n",fib(6));
}
程序的输出结果是什么?请写出程序的执行过程。

你的程序写错了,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,然后结束将结果输出。

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

这个是递归Fibonacci数列求第n项的程序
Fibonacci数列: F(0) = 1, F(1) = 1, F(n) = F(n - 1) + F(n - 2)
写出来就是: 1,1,2,3,5,8,13,21......
所以程序里的fib(6) = 13