递归楼梯中的基本情况
Base Case in Recursive Staircase?
我正在解决这个问题:一个孩子跑上一个有n级台阶的楼梯,一次可以跳1级、2级或3级。实施一种方法来计算孩子可以跑上楼梯的可能方式。
我试图用这个来解决这个问题:
#include <iostream>
using namespace std;
int ways(int N){
if(N == 1 || N == 2) {
return N;
}else if(N <= 0) {
return 0;
}
return ways(N-1)+ways(N-2)+ways(N-3);
}
int main() {
cout<<ways(4);
return 0;
}
输出:4
预期输出:7
我采用f(0<=N(=0,f(1(=1和f(2(=2,其中f(x(是爬第x级楼梯的方式数。但是,它给出了错误的输出。然后,我查看了的解决方案,观察到f(0(=1也被考虑在内,根据我的说法,应该是f(O(=0,因为没有办法爬第0级楼梯。
更改如下:
if(N == 1 || N == 0) {
return 1;
} else if(N == 2) {
return 2;
}
考虑有三个步骤的情况。最后一次返回将执行路(n-1(+路(n-2(+路(n-3(这意味着方式(2(+方式(1(+方式(0(
这里的第三部分代表了孩子一次使用3个楼梯可以爬多少种方式。这将作为0返回,但应该是1。他可以在单程中使用3级台阶爬三级楼梯
相关文章:
- 为什么这个递归没有得到它的基本情况?
- 递归楼梯中的基本情况
- 在递归和基本流中返回
- C++ 循环链表的递归基本情况
- 视觉 在C++中,我试图在没有递归的情况下循环访问许多对象
- 在不使用递归的情况下求解所有 2D 字符串向量组合?(C++)
- 如何将递归函数(具有两个基本情况)转换为迭代函数
- 转换循环以递归基本方法
- 摆脱可变参数模板递归基本情况下不必要的类
- 具有空参数包的递归可变参数模板(以避免基本情况的重复)
- 递归返回函数,在特殊情况下不返回
- 是否有一个术语来表示"single mutex deadlock"(具有非递归互斥锁的死锁类型情况)?
- 递归最糟糕的情况时间复杂性
- 递归模板类别定义的基本案例要求
- 基本C++递归
- 使用递归进行硬币更改的基本情况是什么
- 如何在这个程序中编写关于递归的基本情况
- 如果数字为负数,为什么递归求解中查找给定序列中最大子序列的基本情况会返回0
- 具有许多基本情况的模板递归
- 为什么这个递归函数在基本情况似乎得到满足后继续被调用