1. 斐波那契数列的定义:
1 1 2 3 5 8 13 21 34...
即f(0) = 1; f(1) = 1; f(n) = f(n-1) + f(n-2), n>=2.
2. 方式一:递归调用
int Fib(int n)
{
if (n == 1 || n == 2)
return 1;
else if (n >= 2)
return Fib(n - 1) + Fib(n - 2);
}
优点:简单直接,容易理解;缺点:效率低
3. 方式二:数组存储,循环
int Fib2(int n)
{
int fib[100];
fib[0] = 1;
fib[1] = 1;
for (int i = 2; i < n; i++)
{
fib[i] = fib[i - 1] + fib[i - 2];
}
return fib[n - 1];
}
优点:效率比递归高,但是牺牲空间来换取效率,也并不可取。
4. 方式三:变量存储,循环
int Fib3(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
int fib1 = 1;
int fib2 = 1;
int fib;
for (int i = 3; i <= n; i++)
{
fib = fib1 + fib2;
fib1 = fib2;
fib2 = fib;
}
return fib;
}
5. 方式四:不用中间变量,循环
int Fib4(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
int fib1 = 1;
int fib2 = 1;
for (int i = 3; i <= n; i++)
{
fib1 = fib1 + fib2;
fib2 = fib1 - fib2;
}
return fib1;
}