zoukankan      html  css  js  c++  java
  • 剑指Offer-变态跳台阶

    题目描述

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

    思路

    思路一:

    用递归求解

    $f(n) = f(n-1) + f(n-2) + ... + f(1)$

    $f(n-1) = f(n-2) + ... + f(1)$

    $f(n) = 2*f(n-1)$

    思路二:

    通过方程$f(n)=2^{n-1}$,直接计算跳上一个n级的台阶总共有多少种跳法

    代码实现

    package Recursion;
    
    /**
     * 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
     */
    public class Solution05 {
        public static void main(String[] args) {
            Solution05 solution05 = new Solution05();
            System.out.println(solution05.JumpFloorII_2(3));
    
        }
    
        /**
         * 用递归求解
         * f(n) = f(n-1) + f(n-2) + ... + f(1)
         * f(n-1) = f(n-2) + ... + f(1)
         * f(n) = 2*f(n-1)
         *
         * @param target 台阶数
         * @return 跳法
         */
        public int JumpFloorII(int target) {
            if (target <= 1) {
                return 1;
            } else if (target <= 2) {
                return 2;
            } else {
                return 2 * JumpFloorII(target - 1);
            }
        }
    
        /**
         * f(n)=2^(n-1)
         *
         * @param target 台阶数
         * @return
         */
        public int JumpFloorII_2(int target) {
            //通过移位计算2的次方
            return 1 << (target - 1);
        }
    
    }
    
    
  • 相关阅读:
    入门OJ 4187【周末舞会】
    入门OJ 1532【排队取款】
    洛谷 P3029 [USACO11NOV]【牛的阵容Cow Lineup】
    洛谷 P1638【逛画展】
    入门OJ 1256【排队】
    PKU 1945【Power Hungry Cows】
    RocketMQ重试机制和消息
    Java操作RocketMQ
    RocketMQ概述
    重定向机制
  • 原文地址:https://www.cnblogs.com/wupeixuan/p/8623127.html
Copyright © 2011-2022 走看看