
思路:设f(n)为从1爬到第n层台阶的走法,则f(n)=f(n-1)+f(n-2)。
代码:
public class ClimbingStairs {
public static void main(String[] args) {
System.out.println(climbStairs2(44));
}
public static int climbStairs2(int n) {
if(n==1)
return 1;
if(n==2)
return 2;
int a=1,b=2;
int c=0;
while(n-->2){
c=a+b;
a=b;
b=c;
}
return c;
}
//递归方法会显示超时
public static int climbStairs(int n) {
if(n==1)
return 1;
if(n==2)
return 2;
return climbStairs(n-1)+climbStairs(n-2);
}
}
输出:
![]()

本文深入探讨了经典的爬楼梯问题,通过动态规划的方法求解从地面爬到第n层楼的不同方式数量。介绍了递归和迭代两种算法实现,重点分析了迭代方法的高效性,避免了递归方法的超时问题。
1284

被折叠的 条评论
为什么被折叠?



