1. 程式人生 > >10個臺階,每次只能上1個或者2個,一共有多少種走法

10個臺階,每次只能上1個或者2個,一共有多少種走法

思路來得太慢,好想拿小錘錘捶自己喲~~~

第一種,遞迴思路。

如果你上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種。