编程语言
首页 > 编程语言> > golang 爬楼梯算法

golang 爬楼梯算法

作者:互联网

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

实现:

1. 递归:踏上第n台阶之前,可能位于 第n-1个台阶 或 第n-2个台阶

2. 备忘map:缓存已经算过的记录,减少子问题个数,降低时间复杂度

package main
import(
  "fmt"
)
var mapData = make(map[int]int,0)
func main(){
  num := climbStairs(20)
  fmt.Println(num)
}
func climbStairs(n int) int {
    switch n {
        case 1:
        return 1
        case 2:
        return 2
    }
    if _,ok := mapData[n];!ok{
        mapData[n] = climbStairs(n-1) + climbStairs(n-2)
    }
    return mapData[n]
}

 

标签:爬楼梯,mapData,int,台阶,golang,算法,num,climbStairs,return
来源: https://www.cnblogs.com/Mishell/p/14091463.html