美文网首页
剑指 offer:9、变态跳台阶

剑指 offer:9、变态跳台阶

作者: 云中的Jason | 来源:发表于2019-04-03 16:10 被阅读0次

    9. 变态跳台阶

    题目描述

    一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

    解题思路:

    • 思路1: 利用递归思路,可参考8、跳台阶
      递归公式为:
    f(1) = 1
    f(2) = 1 + f(1) = 2
    f(3) = 1 + f(1) + f(2) = 4
    ...
    f(n) = 1 + f(1) + f(2) + ... + f(n-1)
    

    另外可以观察到:

    f(n) = 1 + f(1) + f(2) + ... + f(n-2) + f(n-1)
    f(n-1) = 1 + f(1) + f(2) + ... + f(n-2) + f(n-1)
    -->
    f(n) = 2*f(n-1)
    
    • 思路2: 除最后一个台阶外,每一个台阶都可以选择跳或者不跳,故f(n) = 2 ^ (n - 1)

    解答:

    // 解法1:
    class Solution {
    public:
        int jumpFloorII(int number) {
            if(number <= 0)
                return 0;
            if(number == 1)
                return 1;
            int ans = 1;
            while(number > 0)
            {
                ans += jumpFloorII(number -1);
                --number;
            }
            return ans;
        }
    };
    
    // 解法2:
    class Solution {
    public:
        int jumpFloorII(int number) {
            if(number <= 0)
                return 0;
            if(number == 1)
                return 1;
            int ans = 1;
            return 2 * jumpFloorII(number - 1);
        }
    };
    
    // 解法3:
    class Solution {
    public:
        int jumpFloorII(int number) {
            int ans =  pow(2, number - 1);
            return ans;
        }
    };
    

    大家有兴趣可以访问我的个人博客,不定时更新一些内容哦!

    图片来自必应壁纸

    相关文章

      网友评论

          本文标题:剑指 offer:9、变态跳台阶

          本文链接:https://www.haomeiwen.com/subject/ciyzbqtx.html