主要是理解题目的含义 总结:反推遍历的问题
public class S_070 {
public int climbStairs(int n){
// 已知的情况
if (n == 1 || n==2)
return n;
// 循环
else {
// 新建数组
int[] ans = new int[n];
// 对前两位已知的数进行赋值
ans[0] = 1;
ans[1] = 2;
// 从2开始
for(int i=2;i<n;i++) {
ans[i]=ans[i-1]+ans[i-2];
}
return ans[n-1];
}
}
}
直接递归的方法:超时
public int climbStairs(int n) {
if (n == 1)
return 1;
else if (n == 2)
return 2;
else
return climbStairs(n-1)+climbStairs(n-2);