要实现斐波那契数列,首先先要了解什么是斐波那契数列
0 ,1,1,2,3,5,8,13...这样的数列称为斐波那契数列
一 非递归
int Fib(int n)
{
if (n == 1)
{
return 0;
}
if (n == 2)
{
return 1;
}
int f1 = 0;
int f2 = 1;
int c = 0;
for (int i = 3; i <= n; i++)
{
c = f1 + f2;
f1 = f2;
f2 = c;
}
return c;
}
int main()
{
int n;
scanf("%d", &n);
int ret=Fib(n);
printf("%d", ret);
system("pause");
return 0;
}
二 非递归
int Fib(int n)
{
int f1 = 0;
int f2 = 1;
if (n >= 1)
{
return n - 1;
}
for (int i = 1; i <= n / 2; i++)
{
f1 = f1 + f2;
f2 = f1 + f2;
}
if (n / 2 != 0)
{
return f1;
}
else
{
return f2;
}
}
三 递归
int Fib(int n)//递归
{
if (n == 1)
{
return 0;
}
if (n == 2)
{
return 1;
}
return Fib(n - 1) + Fib(n - 2);
}
四 递归的改进版
int Fib(int first, int second, int n)
{
if (n <= 2)
{
return n - 1;
}
else if (n == 3)
{
return first + second;
}
else
{
return Fib(second, first + second, n - 1);
}
}
int main()
{
int n;
scanf("%d", &n);
int ret=Fib(0,1,n);
printf("%d", ret);
system("pause");
return 0;
来源:CSDN
作者:daidaihaha
链接:https://blog.csdn.net/baidu_37964044/article/details/79363272