用递归算法求斐波那契数列(1、1、2、3、5、8……)的第n个数的主要代码
答案:2 悬赏:50 手机版
解决时间 2021-02-06 15:55
- 提问者网友:温旧梦泪无声
- 2021-02-06 09:30
用递归算法求斐波那契数列(1、1、2、3、5、8……)的第n个数的主要代码
最佳答案
- 五星知识达人网友:十鸦
- 2021-02-06 10:39
int fib(int n)
{
if(n==1||n==0)
return 1;
else
return fib(n-1)+fib(n-2);
}
{
if(n==1||n==0)
return 1;
else
return fib(n-1)+fib(n-2);
}
全部回答
- 1楼网友:猎心人
- 2021-02-06 11:15
#include
#include
typedef long long int int64;
//方法1,递归法
int64 fibonacci(int n)
{
int64 sum;
if(n<=0)
{
printf("参数值非法!\n");
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("参数值非法!\n");
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",n,fibonacci(n));
printf("f(%d)=%lld\n",n,fibonacci2(n));
return 0;
}
//示例运行结果
f:\c_work>a.exe
5
f(5)=5
f:\c_work>a.exe
6
f(6)=8
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯