LeetCode—70. Climbing Stairs
题目
https://leetcode.com/problems/climbing-stairs/description/
长度为n的梯子,一次可以走1阶或者2阶,问走完梯子有多少种走法。
思路及解法
从后往前看,为了到达第n级台阶,可以从第n-1级走一步,也可以从第n-2级走两步,也就是到达第n级的方法
f(n)=f(n-1)+f(n-2)
数学原理其实是菲波那切数列.
我们使用两种方法来实现,第一种递归的方法,第二种使用数组。具体参看代码
代码
class Solution {
public int climbStairs(int n) {
//递归方法
// if(n <= 2){
// return n;
// }else{
// return climbStairs(n - 1) + climbStairs(n - 2);
// }
//数组
if(n==1){
return 1;
}else{
int[] nums = new int[n];
nums[0] = 1;
nums[1] = 2;
for(int i = 2; i < n; i++){
nums[i] = nums[i - 1] + nums[i - 2];
}
return nums[n-1];
}
}
}