使用步长为1、2或3的C++方法计算到达第n阶楼梯的方法数


假设楼梯共有n阶。一个人一次可以跨越1、2或3阶。目标是找到到达楼上所有可能的走法。

我们将使用递归方法,记住为了到达任何第i阶,一个人必须从第i-1阶(跨越1阶)、第i-2阶(跨越2阶)或第i-3阶(跨越3阶)跳跃过来。

让我们用例子来理解。

输入

N=3 steps

输出

Count of ways to reach the nth stair using step 1, 2 or 3 are: 4

解释

There are total 3 steps
Jump from start ( skip 3 ) : 3 step
Jump from 1’st step (skip 2): 1+2
Jump from 2nd step (skip 1): 2+1
No skip 1+1+1

输入

N=6 steps

输出

Count of ways to reach the nth stair using step 1, 2 or 3 are: 24

解释

There are total 6 steps
Ways: 1+1+1+1+1+1, 2+1+1+1+1, 3+1+1+1, 3+1+2, 3+2+1, 3+3 and so on.

下面程序中使用的方法如下:

  • 我们将整数steps作为总步数。

  • 函数stairs_step(int steps)接收总步数作为输入,并返回所有可能的到达楼上的方法数。

  • 将初始变量count设置为0,表示方法数。

  • 如果步数为0,则返回1。

  • 如果步数为1,则只有一种方法。

  • 如果步数为2,则只有两种方法(1+1或2)。

  • 否则,方法数 = stairs_step(step-3) + stair_step(step-2) + stair_step(step-1)。

(递归方法)

示例

在线演示

#include <iostream>
using namespace std;
int stairs_step(int steps){
   if(steps == 0){
      return 1;
   }
   else if(steps == 1){
      return 1;
   }
   else if (steps == 2){
      return 2;
   }
   else{
      return stairs_step(steps - 3) + stairs_step(steps - 2) + stairs_step(steps - 1);
   }
}
int main(){
   int steps = 5;
   cout<<"Count of ways to reach the nth stair using step 1, 2 or 3 are: "<<stairs_step(steps);
   return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

Count of ways to reach the nth stair using step 1, 2 or 3 are: 13

更新于:2020年10月31日

444 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告