给出的阶梯总数为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