爬樓梯問題
? ? ? ?最近看到很有意思的一道題目,問的是?有一座高度10級臺階的樓梯,從下往上走,每跨一步只能向上1級或者2級臺階。例如,每次走1級臺階,一共走10步,這是其中一種走法;或者每次垮兩級臺階,一共走5步;and so on.問一共有多少種走法。
? ? ? 當(dāng)樓梯級數(shù)很小時,憑借我們大腦弱小的計算能力,可以很快的得出答案。例如臺階數(shù)為1時,當(dāng)然只有一種方法;臺階數(shù)為二時,有兩種方法(11或2);臺階數(shù)為三時,有三種方法(111,12,21)。再隨著臺階數(shù)的增長,我們會驚奇的發(fā)現(xiàn)?天吶!我的腦子越來越不夠用了?!
? ? ? ?這時就需要我們借助人類的好朋友好伙伴~~>計算機,幫我們解答。但問題來了,我們該怎么告訴它我們的需求呢?相信很多小伙伴一定想說,"反正電腦算的快,我們利用排列組合的思想,告訴它用多層嵌套循環(huán)遍歷出所有可能!"Bingo,這樣是可行的?。?!但是請不要虐待電腦,因為它們是我們的好朋友好伙伴??!
? ? ? ? 今天小編就要和大家balabala怎么樣利用函數(shù)重入(遞歸)來化腐朽為神奇!
? ? ? ?小編有一個習(xí)慣,就是看一本書的時候如果發(fā)現(xiàn)從前往后不爽的時候,會換個姿勢從后往前!這樣換個姿勢再來一遍,會發(fā)現(xiàn)不一樣的風(fēng)景?。?!就拿這個問題來說,如果臺階有20級,如果從前往后***慢慢從垮一級或兩級,再垮一級或兩級直至跨到20級,相信你可憐的腦子是算不過來的。但假如我們設(shè)想現(xiàn)在到了最后一步(到了第18級臺階,再跨2級到就到第20級臺階了;或到了19級再跨1級到20級),那么,到達(dá)20級臺階的方法數(shù)Mehod(20)是不是就等于Method(19)+Method(18)?好,如果答案是肯定的,那么我們可不可以歸納出Method(N)=Method(N-1)+Method(N-2)這就是我們得出的狀態(tài)轉(zhuǎn)移關(guān)系!
? ? ? ? 如果要想這個遞歸結(jié)束,我們還需要一個狀態(tài)結(jié)束條件(邊界條件)。這個簡單?Method(1)=1;Method(2)=2
? ? 萬事具備,只欠東風(fēng)!東風(fēng)就是用編程語言告訴計算機,它該怎么做。請看小編用C語言怎么和它說的