我的思路:
1 这题可以用递归也可以用公式,明显用公式是最快的。假设n个台阶的结果是F(n),当你完成的时候,完成之前跳的情况只有两种,要不是跳了两步,那时是在倒数第二个台阶(也可以认为是倒数第三个台阶)F(n - 2),还有一个可能是跳了一个台阶是F(n - 1)。只有这两种可能,所以,结果是F(n) = F(n - 1) + F(n - 2)。
代码如下:
int climbStairs(int n) { if (n < 0) return 0; else if (n == 1) return 1; else if (n == 2) return 2; int answer, before = 2, morebefore = 1; for (int i = 3; i <= n; ++i) { answer = before + morebefore; morebefore = before; before = answer; } return answer; }