假設你正在爬樓梯。需要 n 階你才能到達樓頂。
每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?
注意:給定 n 是一個正整數(shù)。
思路:
n=1:一種走法
n=2:兩種走法
n=3:走法為n=2的走法+走一階,和n=1的走法+走兩階
n=4:走法為n=3的走法+走一階,和n=2的走法+走兩階
.
.
.
可以看出這道題的解法和獲得斐波那契函數(shù)一致,結(jié)果是上兩次計算的結(jié)果。
代碼實現(xiàn):
public int climbStairs(int n) {
if (n == 1) {
return 1;
}
if (n == 2) {
return 2;
}
int[] a = new int[n];
a[0] = 1;
a[1] = 2;
for (int i = 2; i < n; i++) {
a[i] = a[i - 1] + a[i - 2];
}
return a[n - 1];
}