有以下C语言程序,程序的输出结果是什么?请写出详细的执行过程。
有以下C语言程序#include<stdio.h>longfib(intn){if(n>2)return(fib(n-1)+fib(n-2);elsereturn(2);...
有以下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));
}
程序的输出结果是什么?请写出程序的执行过程。 展开
#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));
}
程序的输出结果是什么?请写出程序的执行过程。 展开
3个回答
展开全部
你的程序写错了,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,然后结束将结果输出。
程序的运行结果为: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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询