1. 概念
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、3、5、8、13、21、34……在数学上,这一数列以如下递推的方法定义:
- F(0)=1,
- F(1)=1,
- F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
1. C++实现
1.1. 递归实现
long long Fibonacci_recru(int n)
{
vector<long long> fibo(n + 1);
if (n == 1 || n == 2)
{
return 1;
}
else
{
return Fibonacci_recru(n - 1) + Fibonacci_recru(n - 2);
}
}
1.2. 非递归实现(通过数组保存)
long long Fibonacci_no_recru(int n)
{
vector<long long> fibo(n + 1);
if (n == 1 || n == 2)
{
fibo.at(n) = 1;
}
else
{
fibo.at(1) = 1;
fibo.at(2) = 1;
for (int i = 2; i <= n; i++)
{
fibo.at(i) = fibo.at(i - 1) + fibo.at(i - 2);
// cout << fibo.at(i) << " ";
}
}
return fibo.at(n);
}