问题:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
解题思路:首先依次知道当n逐渐递加时,总共的方法数等于前两次方法之和!!!(最重要的是找到规律)
方法一:递归(会超时)
int climbStairs(int n){
if(n==1||n==2)
return n;
else
return climbStairs(n-1)+climbStairs(n-2);
}
方法二:数组累加
int climbStairs(int n){
int arr[n+1];
arr[0]=1;
arr[1]=2;
if(n==1||n==2)
return n;
for(int i=2;i<n;i++)
arr[i]=arr[i-1]+arr[i-2];
return arr[n-1];
}
参考来源:
1.https://blog.csdn.net/HC199854/article/details/113624820?utm_source=app&app_version=5.0.1&code=app_1562916241&uLinkId=usr1mkqgl919blen
2. https://blog.csdn.net/weixin_42596738/article/details/109757308?utm_source=app&app_version=5.0.1&code=app_1562916241&uLinkId=usr1mkqgl919blen