使用C ++中的步骤1、2或3计算到达第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.

以下程序中使用的方法如下

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

  • 楼梯函数step_int(int steps)将所有步骤作为输入,并通过跳或不跳的方式返回许多到达下一层的方法。

  • 通过这种方式将初始变量计数设为0。

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

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

  • 如果步数是2,则只有2种方式(1 + 1或2)。

  • 其他方式=阶梯(第3步)+阶梯(第2步)+阶梯(第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
猜你喜欢