爬楼梯循环写法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

爬楼梯是一种常见的运动方式,也是一个经典的算法问题。

假设有n个台阶,每次只能向上走1步或2步,那么走完n个台阶有多少种不同的走法呢?这个问题可以通过递归和循环两种方式来实现。

在本文中,我将介绍循环的实现方式。

1. 算法思路
我们可以用一个数组f来记录到达每个台阶的不同走法数。

因为每次只能走1步或2步,所以到达第i个台阶的走法数等于到达第i-1个台阶和第i-2个台阶的走法数之和。

即:
f[i] = f[i-1] + f[i-2]
其中f[1]=1,f[2]=2。

因为到达第1个台阶只有1种走法,到达第2个台阶有2种走法(一次走2步或者分别走两次1步)。

2. 代码实现
根据上述思路,我们可以写出如下的代码实现:
```
int climbStairs(int n) {
int f[n+1];
f[1] = 1;
f[2] = 2;
for (int i = 3; i <= n; i++) {
f[i] = f[i-1] + f[i-2];
}
return f[n];
}
```
我们首先定义一个数组f,长度为n+1。

然后初始化f[1]和f[2]的值。

接着使用循环从第3个台阶开始计算每个台阶到达的不同走法数,最后返回f[n]即可。

3. 时间复杂度
循环方式的时间复杂度为O(n),因为需要遍历每一个台阶计算走法数。

因此,这种方式比递归更高效。

4. 总结
爬楼梯是一道经典的算法问题,可以通过递归和循环两种方式实现。

循环方式的思路简单,代码实现也较为直观,而且时间复杂
度相对较低,因此在实际应用中更加常见。

相关文档
最新文档