斐波那契数列
前言
要学算法了,就从这篇文章作为开始吧!一、斐波那契数列是什么?
相信大家对斐波那契已经很熟悉,长话短说,斐波那契数列数学表达为
F
(
n
)
=
{
1
,
n
=
1
1
,
n
=
2
F
(
n
−
1
)
+
F
(
n
−
2
)
,
n
>
2
F(n)=\left\{\begin{array}{l}1\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;,n=1\\\\1\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;,n=2\\\\F(n-1)\;+\:F(n-2),n>2\end{array}\right.
F(n)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧1,n=11,n=2F(n−1)+F(n−2),n>2
二、实现斐波那契数列的算法
1.算法一
显而易见,我们最容易想到的就是递归算法
代码如下(示例):
Fib(int n){
if(n<1){
return -1;
}
if(n==1 || n==2){
return 1;
}
return Fib(n-1) + Fib(n-2);
}
2.算法二
代码如下(示例):
Fib(int n){
if(n<1){
return -1;
}
int *a = new int[n];
a[0] = 1;
a[1] = 1;
for(int i=2;i<n;i++){
a[i] = a[i-1] + a[i-2];
}
return a[n-1];
}
3.算法三
代码如下(示例):
Fib(int n){
if(n<1){
return -1;
}
if(n==1 || n==2){
return 1;
}
int s1 = 1;
int s2 = 1;
for(int i=2;i<n;i++){
s2 = s1 + s2;
s1 = s2 - s1;
}
return s2;
}
4.算法四
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容。