斐波那契数的三种计算方法
int Fib1(int n)//传统算法速度慢效率低
{
if (n < 1) { return -1; }
if (n == 1 || n == 2) { return 1; }
if (n > 2) { return Fib1(n - 1) + Fib1(n - 2); }
}
int Fib2(int n) //使用数组暂存数据时间复杂度大大降低
{
if (n < 1) { return -1; }
int* a = new int[n + 1];
a[1] = 1;
a[2] = 1;
for (int i = 3; i <= n; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
return a[n];
}
int Fib3(int n)//应用辗转相加法大幅优化
{
int x1, x2;
if (n < 1) { return -1; }
x1 = 1, x2 = 1;
if (n == 1 || n == 2) { return 1; }
for (int i = 3; i <= n; i++)
{
x1 = x1 + x2;
x2 = x1 - x2;
}
return x1;
}