1.通过递归,用时间换空间
2.非递归:用空间换时间
#include<stdio.h>
#include<stdlib.h>
//递归方法
int Fibonacci1(int n)
{
if(n<=0)return 0;
if(n == 1 || n == 2)return 1;
return Fibonacci1(n-1)+Fibonacci1(n-2);
}
//改用非递归,保存之前的计算结构,用空间换时间
int Fibonacci2(int n)
{
if(n == 1 || n == 2)return 1;
int i;
int f;
int f1;
int f2;
f1=1;
f2=1;
for(i=3;i<=n;i++)
{
f = f1 + f2;
f2 = f1;
f1 = f;
}
return f;
}
int main()
{
int test;
int test2;
test=Fibonacci1(21);
test2=Fibonacci2(21);
printf("f1:%d\n",test);
printf("f2:%d\n",test2);
return 0;
}