問題描述:
小明每次上台階時,要麼1次上1個台階,要麼1次上兩個台階。現在他站在0級台階,要上到第k(10<=k<=20)級台階,請問總共有多少種走法。
格式:
輸入格式
一行乙個整數k(10<=k<=20)
輸出格式
一行乙個整數sum代表總共有多少種走法
樣例:
樣例輸入
樣例輸出
演算法思路:
台階數為 1 時:1 種方法
台階數為 2 時:2 種方法
台階數為 3 時:3 種方法
台階數為 4 時:5 種方法
台階數為 5 時:8 種方法
…推到這裡就不難發現從台階是為 3 開始,可用的方法就等於前兩種台階數對應的方法數之和。再想想這不就是乙個斐波那契數列嗎!到這裡問題就迎刃而解了。
對於這樣的題目,開始看著確實比較懵,但是靜下心來仔細思考一下就不難發現其中的規律。所以做題要肯動手,在我看來不動手就說題目難那就是在耍流氓。
c語言**:
遞迴法
#include
intfun
(int k)
else sum =
fun(k-1)
+fun
(k-2);
return sum;
}int
main()
迴圈法
#include
intfun
(int k)
return f3;
}int
main()
ps:
斐波那契數列可以用遞迴法或迴圈法求出。但通常情況下,遞迴法的時間複雜度都要慢與迴圈法,所以有時題目對執行時間有較嚴苛的要求,那就用迴圈法。至於為什麼,我也不大清楚。
小明爬樓梯
include include using namespace std 可愛的小明特別喜歡爬樓梯,他有的時候一次爬乙個台階,有的時候一次爬兩個台階,有的時候一次爬三個台階。如果這個樓梯有36個台階,小明一共有多少種爬法呢?n層台階,走一步剩下n 1層台階,有n 1層台階它自己那麼多種走法,即有f n...
python爬樓梯遞迴 爬樓梯(Python3)
假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1 階 1 階 和 2 階 解題思路 實現了兩種方法,但是第一種超出時間限制 因為遞迴的時候方...
python爬樓梯演算法 爬樓梯(Python3)
假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1 階 1 階 和 2 階 解題思路 實現了兩種方法,但是第一種超出時間限制 因為遞迴的時候方...