騰訊面試題:50個階梯,你一次可以上一階或兩階,走上去,共有多少種走法


有個同學去了騰訊,他說面試時有這么一道思維題:50個階梯,你一次可以上一階或兩階,走上去,共有多少種走法?

費波拉希數列:

 peter的方法雖然不能求得50層的次數,但是可以求得前30多層。依次如下:

一共1個台階的話有1種走法.

一共2個台階的話有2種走法.

一共3個台階的話有3種走法.

一共4個台階的話有5種走法.

一共5個台階的話有8種走法.

一共6個台階的話有13種走法.

一共7個台階的話有21種走法.

一共8個台階的話有34種走法.

一共9個台階的話有55種走法.

一共10個台階的話有89種走法.

一共11個台階的話有144種走法.

一共12個台階的話有233種走法.

一共13個台階的話有377種走法.

一共14個台階的話有610種走法.

一共15個台階的話有987種走法.

一共16個台階的話有1597種走法.

一共17個台階的話有2584種走法.

一共18個台階的話有4181種走法.

一共19個台階的話有6765種走法.

一共20個台階的話有10946種走法.

一共21個台階的話有17711種走法.

一共22個台階的話有28657種走法.

一共23個台階的話有46368種走法.

一共24個台階的話有75025種走法.

一共25個台階的話有121393種走法.

一共26個台階的話有196418種走法.

一共27個台階的話有317811種走法.

一共28個台階的話有514229種走法.

一共29個台階的話有832040種走法.

一共30個台階的話有1346269種走法.

一共31個台階的話有2178309種走法.

一共32個台階的話有3524578種走法.

一共33個台階的話有5702887種走法.

一共34個台階的話有9227465種走法.

一共35個台階的話有14930352種走法.

......

這不正是個費波拉希數列!!!!

 知道這個數學規律就好辦了。代碼如下:

function fib(n) {
            return function(n, a, b) {
                return n > 0 ? arguments.callee(n - 1, b, a + b) : a;
            } (n, 0, 1);
        }
        fib(0); //0
        fib(1); //1
        fib(2); //1
        fib(3); //2
        fib(4); //3
        //......
        fib(50); //12586269025
        fib(51); //20365011074,這里是上到第50個階梯


  

function  GetStepNum( $n)
{
      if($n<1)  return 0;
      if($n==1) return 1;
      if($n==2) return 2;
      if($n>2)
            return GetStepNum($n-1)+GetStepNum($n-2);
}
echo GetStepNum(10);

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM