zoukankan      html  css  js  c++  java
  • 剑指Offer:跳台阶(10.3)

    题目描述:

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

    解题思路:

    这是一道经典的递推题目,你可以想如果青蛙当前在第n级台阶上,那它上一步是在哪里呢?

    显然,由于它可以跳1级台阶或者2级台阶,所以它上一步必定在第n-1,或者第n-2级台阶,也就是说它跳上n级台阶的跳法数是跳上n-1和跳上n-2级台阶的跳法数之和

    设跳上 级台阶有 种跳法,则它跳上n级的台阶有 种跳法。

    然后,我们又思考初始()的情况,跳上1级台阶只有1种跳法,跳上2级台阶有2种跳法,最终我们得到如下的递推式:

    方法一:

    public class Solution {
        public int JumpFloor(int n) {
            if (n == 1) return 1; 
            if (n == 2) return 2;
            return JumpFloor(n - 1) + JumpFloor(n - 2);
        }
    }

    方法二:

    public class Solution {
        public int JumpFloor(int target) {
            int a = 1, b = 1;
            for (int i = 1; i < target; i++) {
                a = a + b;
                b = a - b;
            }
            return a;
        }
    }
  • 相关阅读:
    网店系统H5版(一)
    php date()方法传入时间戳为空时返回1970-01-01
    MySQL实用语句
    HTTPS和SSL握手过程(转载)
    jinfo
    linux下以‘-’开头的文件名
    ssh连接服务器失败解决记录
    Linux时区详解
    fiddler抓包url有乱码
    mysql灾备演练问题
  • 原文地址:https://www.cnblogs.com/lkylin/p/13489551.html
Copyright © 2011-2022 走看看