用递归法求斐波那契数列前40项。

一定要用递归法_(:з」∠)_是c语言哦……,求详细答案。。。
#include "stdio.h"
int Fib(int n)
{
if(n<=0)
{
printf("error input!");
return 0;
}
else if(n==1||n==2)return 1;
else return Fib(n-1)+Fib(n-2);
}
int main()
{
Fib(40);
system("pause");
return 0;
}这个答案就不用了……运行不出来【或者能帮我找找这个答案哪里出错了么

用递归法求斐波那契数列前40项方法为:

1、首先,对非法下标进行判断。

2、定义出递归调用的出口n=1或n=2,直接返回1。


3、使用递归直接调用自身即可,不需要使用数组存储,而是使用压入栈 的数据。注意idea中侧边会显示递归的小圈。

4、添加测试函数,输出前5项与前10项。

5、测试结果如下。

注意事项:

斐波那契数列在自然科学的其他分支,有许多应用。例如,树木的生长,由于新生的枝条,往往需要一段“休息”时间,供自身生长,而后才能萌发新枝。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-16

#include "stdio.h"

long Fib(int n)            //int 类型如果是2字节的话就会溢出

{

if(n<=0)

{

printf("error input!");

return 0;

}

else if(n==1||n==2)return 1;

else return Fib(n-1)+Fib(n-2);

}

int main()

{

 printf("%ld\n",Fib(40));        //没有输出语句

 system("pause");

 return 0;

}

第2个回答  推荐于2018-03-01
#include "stdio.h"
int Fib(int n,int a,int b)
{
if(n>40)
return 0;
else 
{
printf("%10d",a+b);
return Fib(n+1,b,a+b);
}

int main()
{
printf("         1         1");
Fib(3,1,1);
return 0;
}

本回答被提问者和网友采纳
第3个回答  2013-10-16
显示一下就行了
printf("%d",Fib(40));
相似回答