斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n – 1)+F(n – 2)(n ≥ 2,n ∈ N*)。
下面例子用三种方法实现求解斐波那契数列!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | /**************************************************************** * Description: Fibonacci number * Author: Alex Li * Date: 2022-05-01 18:25:39 * LastEditTime: 2024-06-10 21:58:21 ****************************************************************/ #include <iostream> using namespace std; //空间优化 int fibonacciProcess(int n){ int a = 0, b = 1, c, i; c=a+b; for(i = 3; i < n; i++){ a = b; b = c; c=a+b; } return c; } int f[100]; //动态规划 int FibonacciTabulation(int n){ f[0]=0; f[1]=1; for (int i = 0; i < n-2; i++)f[i+2]=f[i]+f[i+1]; return f[n-1]; } //递归 int FibonacciRecursion(int n){ if(n==1)return 0; if(n==2)return 1; else return FibonacciRecursion(n-1)+FibonacciRecursion(n-2); } int main(){ int n; cout<<"please input Fibonacci number:"; cin>>n; cout<<fibonacciProcess(n)<<endl; cout<<FibonacciRecursion(n)<<endl; cout<<FibonacciTabulation(n)<<endl; for (int i = 0; i <n; i++){ cout<<f[i]<<' '; } return 0; } |
洛谷:B2064
OJ:T1156