# 天天爬樓梯 https://neoj.sprout.tw/problem/443/ ### 題目敘述 ![](https://i.imgur.com/AycLIjV.png) 天天最近沉迷於爬樓梯,他發現一個同樣的樓梯可以有許多不同的爬法, 例如3階的樓梯可以一階一階爬完(111)、先跳兩階再爬完最後一階(21)、 先爬一階再跳兩階(12)、一次跳三階(3)四種爬法。 因為太喜歡爬樓梯了,現在天天每看到一段樓梯都會忍不住算一算總共有幾種爬法, 但隨著階梯數越來越多,他算完後常常就沒有時間去爬他最愛的樓梯了。 已知天天腳很短,一次最多只能跳3階樓梯,你能編寫一個函數讓天天每見到一個樓梯 馬上就能算出總共有幾種爬法,讓他有時間去爬他最愛的樓梯嗎? 為了防止造成你太大的負擔,天天已經寫好一半的code了, 你只需要完成function部分即可。 ### 天天的code: ```cpp #include <iostream> int ladder(int n); /* 你的code會放在這邊 */ int main() { int n; std::cin >> n; std::cout << ladder(n) << '\n'; return 0; } ``` ### 輸入說明 輸入一個正整數n代表樓梯階數,保證0<n<=30。 ### 輸出說明 請輸出這個樓梯有幾種爬法,輸出後請換行。 ### 範例輸入 ``` 3 ``` ### 範例輸出 ``` 4 ``` # Code ```cpp int ladder(int n) { if (n == 0) return 0; if (n == 1) return 1; if (n == 2) return 2; if (n == 3) return 4; return ladder(n - 3) + ladder(n - 2) + ladder(n - 1); } ```