//备忘方法解决斐波那契问题
int f(int n,int *r)
{
int i = 0;
int sum = 0;
if (n <= 0)
{
return 0;
}
if (r[n] >= 0)
{
return r[n];
}
r[n] = f(n-1,r) + f(n-2,r);
return r[n];
}
//备忘方法
int Fabonacci_2(int n)
{
int *r = (int *)malloc((n+1)*sizeof(int));
int i=0;
for (i=0;i<=n;i++)
{
r[i] = -1;
}
r[0] = 0;
r[1] = 1;
return f(n,r);
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//自底向上方法
int Fabonacci_3(int n)
{
int i= 0;
int *r = (int *)malloc((n+1)*sizeof(int));
int result = 0;
r[0] = 0;
r[1] = 1;
if (n <= 0)
{
return 0;
}
if (n == 1)
{
return 1;
}
for(i = 2;i <= n;i++)
{
result = r[i - 2] + r[i - 1];
r[i] = result;
}
return result;
}