zoukankan      html  css  js  c++  java
  • 走楼梯算法

    首先,我们来看下下面这栋楼梯:

    一共四层,我们规定“一个人爬楼梯,一步可以迈一级,二级台阶,如果楼梯有N级,要求编写程序,求总共有多少种走法”,接下来我们统计下这四层,每层的走法:

    从这个简短的统计中,我们可以发现一个规律(如果觉得还看不出,可以再多几阶楼梯),从第三阶梯开始,走法就是第一阶梯走法和第二阶梯走法之和,第四阶梯走法是第三阶梯和第二阶梯走法之和,所以,我们可以得到如下如下公式:

     由此可知,此处应用递归算法。

    而第一阶梯和第二阶梯这样无规律的数字,我们可以将他定量表示,由此,我们得出如下实现方式来求出N阶阶梯的走法:

    function getNum($n) {
        switch($n) {
            case 1:
                return 1;
            case 2:
                return 2;
            default:
                return getNum($n-1) + getNum($n-2);
        }
    }

    假如爬楼梯时一步还可以迈三步,这时候其实就是,N级楼梯问题可以划分为:N-1级楼梯,N-2级楼梯,N-3级楼梯的走法之和。以此类推,不过一般也就时最大三步了。

  • 相关阅读:
    App Submission Issues
    番茄钟App(Pomodoro Tracker)
    WatchKit App Submission Issues
    Watch​Kit Learning Resources
    Scrum Planning Card
    How to get cocoapods work on Yosemite
    如何在DigitalOcean安装Ghost
    Swift学习资源
    Xcode 6 模拟器路径
    【Android-4】Scheme跳转协议
  • 原文地址:https://www.cnblogs.com/totian/p/7295106.html
Copyright © 2011-2022 走看看