题目描述:
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda 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*)
请求出该数列中第n个数字(n从1开始计数)是多少。
递推:
#include <iostream> using namespace std; int main() { int a = 0; int b = 1; // 1 int c = 1; // 2 int n, ans; cin >> n; if(n == 1) ans = 1; else{ for(int i = 2; i <= n; i++){ ans = a + b; a = b; b = ans; } } cout << ans << endl; return 0; }
递归:
#include <iostream> using namespace std; int fn(int n) { //递归出口1 if(n==0) return 0; //递归出口2 else if(n==1 ) return 1; else return fn(n-1)+fn(n-2); //递归关系式 } int main() { int n; //第几个数 int ans; cin>>n; ans=fn(n); cout<<ans<<endl; }
参考:蓝桥杯2022 冲刺班