假如你正在爬樓梯。需要n階你才能到達樓頂。每次你只可以爬1或2個臺階,你有多少種方法可以爬到樓頂?
由于算法題做的比較少,我大概歸納出一套解題思路(不知道適不適合全部):
1、寫出具體示例
1層 1? ? 一種
2層 1+1 2? ? 二種
3層 111 12 21? ? 三種
4層 1111 121 211 112 22? ? 五種
5層 11111 221 212 122 1112 2111 1211 1121 八種
2、找出數(shù)學關(guān)系
這道題在1層和2層看不出數(shù)學關(guān)系,我覺得大部分題也是這樣的。觀察得出f(n)=f(n-1)+f(n-2)。等做題做多了再總結(jié)下常見的數(shù)學關(guān)系
3、編程序
首先想到遞歸,由于遞歸時間復(fù)雜度較大,不可取
用for循環(huán)解決
我們可以利用for循環(huán)和數(shù)組解決。
細節(jié):別忘了前面的if(n=0)if(n=1)if(n=2)的返回值