按照灵神题单刷题,题单如下 灵神题单
入门DP #
爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
按照思路,需要思考,dfs(i) 是什么含义 这里是到达 i 层需要多少走多少阶台阶,想要到达i层 我们要先到 i-1 或者 i-2

func climbStairs(n int) int {
var dfs func(int ) int
cache:=make([]int,n+1)
dfs=func(i int )(ans int ) {
if i<=1 {
return 1
}
if cache[i]!=0{
return cache[i]
}
ans= dfs(i-1)+dfs(i-2)
cache[i]=ans
return
}
return dfs(n)
}