假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
直接递归会产生超时现象,此处使用有记忆的递归方式。
class Solution {
public int climbStairs(int n) {
int[] memo = new int[n+1];
return climbStairsMemo(n,memo);
}
public int climbStairsMemo(int n ,int []memo){
if(memo[n]>0){return memo[n];}
if(n==1 || n==2)
{ memo[n]=n;}
else{
memo[n] = climbStairsMemo(n-1,memo)+climbStairsMemo(n-2,memo);
}
return memo[n];
}
}



