永发信息网

分别用非递归和递归的方法编写函数求斐波那契数列第n项。斐波那契数列1,1,2,3,5,8,13,…

答案:1  悬赏:0  手机版
解决时间 2021-03-23 02:50
  • 提问者网友:雾里闻花香
  • 2021-03-22 10:22
分别用非递归和递归的方法编写函数求斐波那契数列第n项。斐波那契数列1,1,2,3,5,8,13,…
最佳答案
  • 五星知识达人网友:人類模型
  • 2021-03-22 10:42

#include 
#include 
typedef long long int int64;
//方法1,递归法
int64 Fibonacci(int n)
{
int64 sum;
if(n<=0)
{
printf("参数值非法!
");
exit(-1); //直接终止程序
}
if(n==1 || n==2)
return 1;
else
sum=Fibonacci(n-1)+Fibonacci(n-2);
return sum;
}
//方法2,非递归法
int64 Fibonacci2(int n)
{
int64 a,b,c;
if(n<=0)
{
printf("参数值非法!
");
exit(-1); //直接终止程序
}
if(n==1 || n==2)
return 1;
a=b=1;  //对前两项的值初始化
n=n-2; //因为是从第3项开始记次数,所以减2
while(n > 0)
{
c=a+b;
a=b;
b=c;
n--;
}
return c;
}
//测试主函数
int main()
{
int n;
scanf("%d",&n); //输入n
//printf("F(%d)=%lld
",n,Fibonacci(n));
printf("F(%d)=%lld
",n,Fibonacci2(n));
return 0;
}
//示例运行结果
F:c_work>a.exe
5
F(5)=5

F:c_work>a.exe
6
F(6)=8
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯