跳台阶

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
第一种方法:采用递推的方式
 
class Solution {
public:
    int jumpFloor(int number) {

        //递推公式f[n] = f[n -1] + f[n - 2]
        int f[number];
        f[0] = 1;
        f[1] = 2;

        for (int i = 2; i < number; i++) {
            f[i] = f[i - 1] + f[i - 2];
        }
        return f[number - 1];
    }
};

第一种方法:采用递归的方式

 1 class Solution {
 2     //递归的方法
 3 public:
 4     int jumpFloor(int number) {
 5         if (number <= 0) {
 6             return -1;
 7         }
 8         if (number == 1) return 1;
 9         if (number == 2) return 2;
10         return jumpFloor(number - 1) + jumpFloor(number - 2);
11     }
12 };

两种方法的运行时间与空间对比:

解决问题 提交时间 状态 运行时间 占用内存 使用语言
跳台阶 2018-07-26 答案正确 463 ms 604K C++
跳台阶 2018-07-26 答案正确 4 ms 480K C++

采用递推的方法运行时间远低于递归的方法,占用内存也小于递归的方法!

原文地址:https://www.cnblogs.com/gousheng/p/9371827.html