每次妳可以爬 1 或 2 個臺階。妳有多少種不同的方法可以爬到樓頂呢?
註意:給定 n 是壹個正整數。
示例 1:
示例 2:
這壹題壹開始我竟然考慮排列組合,由於數學丟了壹些年,導致我又去翻公式,折騰了半天,還是壹籌莫展。
然後看了壹下提示,說是考慮之前的步數,才恍然大悟可用遞歸。
因為,如果當已經爬了n層了,用了m種方法,如果只能在這個現狀的基礎上,再走壹步,那麽,此時只有m種可能性,即只能走壹步;
那是不是說,爬n + 1層,就有2m種可能性呢?
並不是這樣,因為上面說的情況是,走了n層以後現狀,即上壹步不能改變了,但是,當爬了n-1層的時候,如果後面還有2層可以走,那麽除了爬1階以外,還可以有2階這個選項。
那麽,假設爬n-1層的時候,有o種可能性了,然後下壹步爬2階,即可到n+1。
因此,爬n+1層的可能性是 m + o
也就是說:
此外,不能寫單純的遞歸式,會導致大量的重復計算,這裏用壹個字典來儲存計算結果,可減少計算次數。