递归菲波那切数列,求大神讲解一下
新手一个,搞不懂用c语言写斐波那契数列,假如求第五步,那五个一是怎么返回出来的,递归函数如下
(只写了递归,其他就不写了)int fun(int n)
{
if(n==1 || n==2)
return 1;
else
return fun(n-1) + fun(n-2);
求大神讲解!

w340
浏览 1695回答 2
2回答
-
硕树
i=0;j=1;i=i+j;j=i+j;
-
望远
#include<stdio.h>
int fun(int n)
{ //菲波那切数列 1,1,2,3,5,8
//前两项为1,从第三项开始依次是前两项之和
if(n==1 || n==2) //递归结束条件
return 1; //当传入的参数时1或者2时都是返回1(前两项为1)
else return fun(n-1) + fun(n-2); //如果不是1或者2,那么采用递归调用将当前项转化为前两项之和
}
void main()
{
printf("第6项是%d\n",fun(6));
//fun(6)=fun(5)+fun(4);
//fun(5)=fun(4)+fun(3);
//....直到一直递归到fun(1),fun(2)
}
打开App,查看更多内容