//递归
int jumpFloor_1(int number) {
if (number <= 0)
return 0;
if (number == 1)
return 1;
if (number == 2)
return 2;
return jumpFloor_1(number - 1) + jumpFloor_1(number - 2);
}
//迭代
int jumpFloor_2(int target)
{
if (target == 1 || target == 2) {
return target;
}
// 第一阶和第二阶考虑过了,初始当前台阶为第三阶,向后迭代
// 思路:当前台阶的跳法总数=当前台阶后退一阶的台阶的跳法总数+当前台阶后退二阶的台阶的跳法总数
int jumpSum = 0;// 当前台阶的跳法总数
int jumpSumBackStep1 = 2;// 当前台阶后退一阶的台阶的跳法总数(初始值当前台阶是第3阶)
int jumpSumBackStep2 = 1;// 当前台阶后退二阶的台阶的跳法总数(初始值当前台阶是第3阶)
for (int i = 3; i <= target; i++) {
jumpSum = jumpSumBackStep1 + jumpSumBackStep2;
jumpSumBackStep2 = jumpSumBackStep1;// 后退一阶在下一次迭代变为后退两阶
jumpSumBackStep1 = jumpSum; // 当前台阶在下一次迭代变为后退一阶
}
return jumpSum;
}
跳台阶
最新推荐文章于 2024-04-07 16:37:00 发布