zoukankan      html  css  js  c++  java
  • 剑指offer[8]——跳台阶

    题目描述

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

    做过上一道题目的同学应该对这道题目没什么问题了,这道题的实质还是一个菲波那切数列,大家有什么不明白的可以点击这里跳转

    题目中说明青蛙可以跳一级或两级台阶,我们先试着推导一下,如果是只有一级台阶,很显然只有一种跳法;如果是两级台阶的话,可以从平台跳两级台阶或者先跳到一级再跳到两级,总共有两种跳法,那么接下来到第三级台阶呢,大家有可能会发现继续按照前面的枚举方法好像不太适用。

    大家应该会发现,想要跳上第三级台阶,那么在跳上第三级台阶之前就只有两个做法:

    1. 从第一级台阶跳两级到第三级台阶
    2. 从第二级台阶跳一级到第三级台阶

    既然这样的话,是不是把跳到第一级台阶的方法数加上跳到第二级台阶的方法数就是跳上第三级台阶的方法数了呢,答案显然就是这样。

    同理,跳上第四级台阶的方法数等于跳上第三级台阶的方法数加上跳上第二级台阶的方法数,推理结果如下:

    大家可以看出这就是一个斐波那契数列,算法如下:

    function jumpFloor(number)
    {
        let a = 1;
        let b = 2;
        while(--number!=0){
            b = a + b;
            a = b - a;
        }
        return a;
    }
    
    我不管,JS天下第一
  • 相关阅读:
    信令基本概念
    CMMI
    关于OpenDataSource, OpenRowSet
    冒泡排序
    使用Sqlldr向oracle导入数据
    PowerDesigner生成sql和反向工程生成ER图的问题
    2021.1.4 学习总结
    12天 —— 关于生活与目标的思考【2020.8.5~2020.8.17】
    大一暑假学习总结(七)【2020.7.28~2020.8.4】
    学习:用javascript增加、删除行(转)
  • 原文地址:https://www.cnblogs.com/Jacob98/p/12449398.html
Copyright © 2011-2022 走看看