题目
假设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
思路
1、设跳上 n 级台阶有 f(n) 种跳法。在所有跳法中,青蛙的最后一步只有两种情况: 跳上 1 级或 2 级台阶。
当为 1 级台阶: 剩 n−1 个台阶,此情况共有 f(n−1) 种跳法。
当为 2 级台阶: 剩 n−2 个台阶,此情况共有 f(n−2) 种跳法。
代码
class Solution {
public int climbStairs(int n) { //动态规划类(类似求斐波那契数列的第n项)
int a= 1,b=1,sum; // f(0)=1 f(1) = 1 f(2) = f(0)+f(1)=2
for (int i=0;i<n-1;i++) {
sum = a+b;
a=b;
b= sum;
}
return b;
}
}