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