#include<iostream> using namespace std; ///递归实现 int fib(const int n) { if(n<0) return n; else if(n==0||n==1) return 1; else return fib(n-1)+fib(n-2); } ///动态规划-1 int fib1(const int n) { if(n<=0) return n; int Mem[n]; Mem[0]=1; Mem[1]=1; for(int i=2; i<=n; i++) { Mem[i]=Mem[i-1]+Mem[i-2]; } return Mem[n]; } ///动态规划-2 int fib2(const int n) { if(n<=0) return n; int mem_2=1,mem_1=1,mem=1; if(n==0||n==1) return mem; for(int i=2; i<=n; ++i) { mem=mem_1+mem_2; mem_2=mem_1; mem_1=mem; } return mem; } int main() { cout<<"fib(5)>>"<<fib(5)<<endl; cout<<"fib1(5)>>"<<fib1(5)<<endl; cout<<"fib2(5)>>"<<fib2(5)<<endl; return 0; }