跳台阶

跳台阶

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

斐波那契数列的变形, 非递归版与递归版都多了2 == number的判断

版本一: 非递归版

class Solution {
public:
    int jumpFloor(int number) {
        int fn_1 = 2; 
        int fn_2 = 1;
        int ret = 0;
        
        if (number <= 0) {
            return ret;
        }
        
        if (number == 1) {
            return 1;
        }
        
        if (2 == number) {
            return 2;
        }
        
        for (int i = 2; i < number; i++) {
            ret = fn_1 + fn_2;
            fn_2 = fn_1;
            fn_1 = ret;
        }
        
        return ret;
    }
};

版本二: 递归版

class Solution {
public:
    int jumpFloor(int number) {
        if (0 >= number) {
            return 0;
        }
        
        if (1 == number) {
            return 1;
        }
        
        if (2 == number) {
            return 2;
        }
        
        return jumpFloor(number - 1) + jumpFloor(number - 2);
    }
};
posted @ 2019-02-23 14:13  张飘扬  阅读(111)  评论(0编辑  收藏  举报