斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列: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*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
关键点:找到题目给的关键的通项公式即可,多写几个步骤一般都能发现。还有要注意起始的初值即可。此类题目不难。
下面给出几个剑指offer上面的题目,仅供参考!
题1:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
#include <iostream>
using namespace std;
class Solution {
public:
int Fibonacci(int n) {
if (n <= 1) return 1;
if (n == 2) return 2;
long long fib1 = 1;
long long fib2 = 2;
long long Fib = 0;
for (int i = 3; i <= n; i++){
Fib = fib1 + fib2;
fib1 = fib2;
fib2 = Fib;
}
return Fib;
}
};
int main(){
int n;
cin >> n;
Solution s1;
cout << s1.Fibonacci(n) << endl;;
}
题2:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
#include <iostream>
using namespace std;
class Solution {
public:
int jumpFloor(int number) {
if (number == 1) return 1;
if (number == 2) return 2;
long long fib1 = 1;
long long fib2 = 2;
long long Fib = 0;
for (int i = 3; i <= number; i++){
Fib = fib1 + fib2;
fib1 = fib2;
fib2 = Fib;
}
return Fib;
}
};
int main(){
int n;
cin >> n;
Solution s1;
cout << s1.jumpFloor(n) << endl;;
}
题3:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
#include <iostream>
using namespace std;
class Solution {
public:
int jumpFloorII(int number) {
if (number == 1)return 1;
long long fib1 = 1;
long long Fib = 0;
for (int i = 2; i <= number; i++){
Fib = fib1 * 2;
fib1 = Fib;
}
return Fib;
}
};
int main(){
int n;
cin >> n;
Solution s1;
cout << s1.jumpFloorII(n) << endl;;
}
题4:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
#include <iostream>
using namespace std;
class Solution {
public:
int rectCover(int number) {
if (number == 1)return 1;
if (number == 2)return 2;
long long fib1 = 1;
long long fib2 = 2;
long long Fib = 0;
for (int i = 3; i <= number; i++){
Fib = fib1 + fib2;
fib1 = fib2;
fib2 = Fib;
}
return Fib;
}
};
int main(){
int n;
cin >> n;
Solution s1;
cout << s1.rectCover(n) << endl;;
}
参考文献:
[1]百度百科-斐波那契数列
[2]牛客网,剑指offer——编程题