方法一:递归

思路:从结果往前进行递推
注意:运行超时 ❌

  1. func climbStairs(n int) int {
  2. if n <= 2 {
  3. return n
  4. }
  5. return climbStairs(n-1) + climbStairs(n-2)
  6. }

【推荐】方法二:

思路:从前往后递推

// 正着推
func climbStairs(n int) int {
    if n <= 2 {
        return n
    }

    oneStep, twoStep := 1, 2
    for i := 2; i < n; i++ {
        oneStep, twoStep = twoStep, oneStep + twoStep
    }
    return twoStep
}