剑指 Offer 10- I 和 剑指 Offer 10- II 解题方法相同
迭代算法的时间和内存损耗以及源代码:
int fib(int n){
if (n == 0)
{
return 0;
}
else if (n == 1)
{
return 1;
}
else
{
return fib(n-1)+fib(n-2);
}
}
迭代算法虽然简洁但是时间和内存消耗(会造成栈溢出)都很多,因此需要用循环来解这道题。
时间和内存消耗以及源代码如下:
int fib(int n){
long f;
if (n == 0)
{
f = 0;
}
else if (n == 1)
{
f = 1;
}
else
{
long f1 = 0;
long f2 = 1;
unsigned int i;
for (i=0; i<=(n-2); i++)
{
f = (f1 + f2) % (1000000007);
f1 = f2;
f2 = f;
}
}
return f;
}