10個臺階,每次只能上1個或者2個,一共有多少種走法
阿新 • • 發佈:2019-01-10
思路來得太慢,好想拿小錘錘捶自己喲~~~
第一種,遞迴思路。
如果你上10個臺階,可以分解成下面兩種情況:
● 上9個臺階,最後上1個臺階。假設這種情況下,上前面9個臺階的方法數為m。
● 上8個臺階,最後上2個臺階。假設這種情況下,上前面8個臺階的方法數為n。
所以,上10個臺階的方法數,其實就是 m + n。
可以遞迴為:
f(n) = f(n - 1) + f(n - 2), n > 2
f(n) = 2 , n = 2
f(n) = 1 , n = 1
private static int step(int n) { if (n == 1) return 1; if (n == 2) return 2; else return step(n - 1) + step(n - 2); }
第二種,排列思路。
10個臺階,全部都走兩步的話,無非就是5個兩步。
● 全是一步,10個一步。1種。
●
1個兩步,8個一步。相當於從9個坑裡放1個兩步。9C1 = 9種。
●
2個兩步,6個一步。相當於從8個坑裡放2個兩步。8C2 = 28種。
●
3個兩步,4個一步。相當於從7個坑裡放3個兩步。7C3 = 35種。
●
4個兩步,2個一步。相當於從6個坑裡放4個兩步。6C4 = 15種。
●
5個兩步。1種。
所以一共有:1 + 9 + 28 + 35 + 15 + 1 = 89種。