规律:f(1)=1,f(2)=2,f(3)=f(2)+f(1),f(n)=f(n-1)+f(n-2)
结果完全依赖于前两阶梯方法之和
1.递归
int method(int n){
if(n<=2){
return n;
}
return method(n-1)+method(n-2);
}2.动态规划
int method(int n){
if(n<=2){
return n;
}
int pre2=1,pre1=2;//首次执行到这里,说明n=3。先把之前两阶梯的值取出来,因为第三次依赖于前两层
for(int i=2;i<n;i++){
int cur=pre1+pre2;//第三层的结果
pre2=pre1;//更新n-2层的结果,为了下一次循环
pre1=cur;//更新n-1层的结果,为了下一次循环
}
return pre1;
}
京公网安备 11010502036488号