码迷,mamicode.com
首页 > 编程语言 > 详细

走楼梯算法

时间:2017-08-06 17:00:53      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:编写   span   分享   一个   递归算法   最大   png   ret   规律   

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

技术分享

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

 

走楼梯算法

标签:编写   span   分享   一个   递归算法   最大   png   ret   规律   

原文地址:http://www.cnblogs.com/totian/p/7295106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!