题目
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
相关话题:动态规划
我的思路:这个题目可以用递归做,但是我觉得又没有必要写个递归。
直接循环遍历也差不多。
这个解体的数学模型是斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。
a1=1,a2=1,an=an-1+an-2(n>=3,n∈N*)
我的代码:
class Solution {
public int climbStairs(int n) {
if(n==1)
return 1;
if(n==2)
return 2;
int firstNum=1,secNum=2,res=0;
for(int i=3;i<=n;i++)
{
res=firstNum+secNum;
firstNum=secNum;
secNum=res;
}
return res;
}
}