樓梯問題和斐波那契數列(Fibonacci Sequence)

假設一個樓梯有 N 階臺階,人每次最多能夠跨 M 階。例如樓梯總共有3個臺階,人每次最多跨2個臺階,也就是說人每次能夠走1個,也能夠走2個,但最多不會超過2個,那麼樓梯總共有這麼幾種走法:php

咱們這樣看面試

1臺階樓梯走法爲1,算法

2臺階樓梯走法爲2,code

3臺階樓梯走法爲3,ci

4臺階樓梯走法爲5,io

5臺階樓梯走法爲8,function

咱們能夠得出規律,這實際上是一個斐波那契數列,就很容易解決了date

印象中有次面試被問到這個問題,因此在這裏分享下分享

算法以下co

<?php

/*
 * 2015/3/4 update
 * 1 2 3 5 8 13
 */
function fibonacci($n) 
{
    if ($n == 1) {
        return 1;
    }

    if ($n == 2) {
        return 2;
    }
    return fibonacci($n - 1) + fibonacci($n - 2);
}

for ($index = 1; $index < 10; $index++) {
    echo fibonacci($index)."\n";
}
相關文章
相關標籤/搜索