走楼梯算法

Posted Duotian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了走楼梯算法相关的知识,希望对你有一定的参考价值。

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

一共四层,我们规定“一个人爬楼梯,一步可以迈一级,二级台阶,如果楼梯有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级楼梯的走法之和。以此类推,不过一般也就时最大三步了。

 

以上是关于走楼梯算法的主要内容,如果未能解决你的问题,请参考以下文章

北京大学 程序设计与算法 递归 上台阶

7.22 递归的例子:楼梯算法

CSDN|每日一练走楼梯

CSDN|每日一练走楼梯

CSDN|每日一练走楼梯

算法分析之爬楼梯问题