//第一种解法:递归实现,可以理解为从后往前,但是当求N较大时,效率非常低。
int fibN1(int n)
{
if (n <= 0)
return 0;
if (n == 1)
{
return 1;
}
return fibN1(n - 1) + fibN1(n - 2);
}
//第二种解法:可以理解为从前往后。
int fibN2(int n)
{
int ret[2] = { 0, 1 };
if (n < 2)
return ret[n];
int fib1 = 1;
int fib2 = 0;
int fibN = 0;//如果需要很大的数,可以将类型设置为long int 或者long long int
for (int i = 2; i <= n; i++)
{
fibN = fib1 + fib2;
fib2 = fib1;
fib1 = fibN;
}
return fibN;
}
08-29
08-29