刷题9 斐波那契数列及跳台阶问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题9 斐波那契数列及跳台阶问题相关的知识,希望对你有一定的参考价值。

斐波那契数列问题描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。  n<=39

 

关于斐波那契数列, 定义是这样的:

技术分享图片

因为递归太浪费空间, 所以采用循环:

 1 class Solution {
 2 public:
 3     int Fibonacci(int n) {
 4         if(n < 2)
 5             return n;
 6         int first = 0;
 7         int second = 1;
 8         int sum = -1;
 9         for(int i = 0; i < n - 1; i++)
10         {
11             sum = first + second;
12             first = second;
13             second = sum;
14         }
15         return sum;
16     }
17 };

这种方法采用了三个变量来参与循环,有强迫症的可以改成两个变量:

 1 class Solution {
 2 public:
 3     int Fibonacci(int n) {
 4         if(n < 2)
 5             return n;
 6         int first = 0;
 7         int second = 1;
 8         for(int i = 0; i < n - 1; i++)
 9         {
10             second += first;
11             first = second - first;
12         }
13         return second;
14     }
15 };

 

这个跳台阶的问题就是斐波那契数列的应用了,问题描述:  一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

f(1) = 1; f(2) = 2; f(3) = 3; f(4) = 5; f(n) = f(n-1) + f(n-2);

 1 class Solution {
 2 public:
 3     int jumpFloor(int number) {
 4         if(number < 3)
 5             return number;
 6         int first = 1;
 7         int second = 2;
 8         for(int i = 3; i <= number; i++)
 9         {
10             second = first + second;
11             first = second - first;
12         }
13         return second;
14     }
15 };

 

以上是关于刷题9 斐波那契数列及跳台阶问题的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer(10)—— 斐波那契数列以及跳台阶问题

《剑指Offer——10- I. 斐波那契数列,10- II. 青蛙跳台阶问题63. 股票的最大利润》代码

递归2之对青蛙跳台阶和斐波那契数列的思考

斐波那契数列及青蛙跳台阶问题

斐波那契数列-跳台阶

斐波那契数列与跳台阶问题以及变态跳台阶