題目:乙個台階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有多少總跳法,並分析演算法的時間複雜度。
分析:這道題最近經常出現,包括microstrategy等比較重視演算法的公司都曾先後選用過個這道題作為面試題或者筆試題。
首先我們考慮最簡單的情況。如果只有1級台階,那顯然只有一種跳法。如果有2級台階,那就有兩種跳的方法了:一種是分兩次跳,每次跳1級;另外一種就是一次跳2級。
現在我們再來討論一般情況。我們把n級台階時的跳法看成是n的函式,記為f(n)。當n>2時,第一次跳的時候就有兩種不同的選擇:一是第一次只跳1級,此時跳法數目等於後面剩下的n-1級台階的跳法數目,即為f(n-1);另外一種選擇是第一次跳2級,此時跳法數目等於後面剩下的n-2級台階的跳法數目,即為f(n-2)。因此n級台階時的不同跳法的總數f(n)=f(n-1)+(f-2)。
我們把上面的分析用乙個公式總結如下:
/1n=1
f(n)=2n=2
/f(n-1)+(f-2)n>2
分析到這裡,相信很多人都能看出這就是我們熟悉的fibonacci序列。至於怎麼求這個序列的第n項,請參考
本面試題系列第16題
,這裡就不在贅述了。
程式設計師面試題 跳台階問題
題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 題目解析 比如只有乙個台階,這個時候這只青蛙沒有第二種選擇,只能一次跳1級台階,也就是只有一種跳法。比如共有2個台階呢?此時,這只青蛙就有兩種選擇了,第一種選擇是一次跳1級,...
程式設計師面試題 跳台階問題
題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 題目解析 比如只有乙個台階,這個時候這只青蛙沒有第二種選擇,只能一次跳1級台階,也就是只有一種跳法。比如共有2個台階呢?此時,這只青蛙就有兩種選擇了,第一種選擇是一次跳1級,...
程式設計師面試題 跳台階問題
題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 題目解析 比如只有乙個台階,這個時候這只青蛙沒有第二種選擇,只能一次跳1級台階,也就是只有一種跳法。比如共有2個台階呢?此時,這只青蛙就有兩種選擇了,第一種選擇是一次跳1級,...