递归思想,寻找f(n)和f(n-1)的关系
假设,前n-1个台阶已经算出方法数为f(n-1),现在要多加一层台阶,那么就会出现以下两种情况:
- 前n-1个台阶的走法不变,最后走1阶,那么n阶的走法为f(n-1);
- 前n-2个台阶的走法不变,最后走2阶,那么n阶的走法为f(n-2);
综上,n阶台阶的走法可以是f(n-1)也可以是f(n-2),那么总的走法就为:f(n)=f(n-1)+f(n-2)(斐波那契)
class Solution {
public int climbStairs(int n) {
if(n==0) {return 0;}
else if(n==1){return 1;}
else{
int[] f = new int[n];
f[0]=1;
f[1]=2;
for(int i=2;i<=n-1;i++){
f[i]=f[i-1]+f[i-2];
}
return f[n-1];
}
}
}