【Go】走台阶

问题:有N个台阶,每次可以走一个台阶也可以走两个台阶,请问有多少种走法?

package main

import "fmt"

func step(n uint) uint {
   if n < 1 {
      return 0
   } else if n == 1 {
      return 1
   } else if n == 2 {
      return 2
   } else {
      // 1. 先走1步,则剩下n-1个台阶,那么问题变为走完n-1个台阶有多少种走法。
      // 2. 先走2步,则剩下n-2个台阶,那么问题变为走完n-2个台阶有多少种走法。
      // 3. 上面两种情况相加,就是走完n个台阶的走法。
      return step(n-1) + step(n-2) 
   }
}

func main() {
   fmt.Println(step(5))
}

  

posted @ 2022-11-16 10:42  kunsile  阅读(41)  评论(0编辑  收藏  举报