【发布时间】:2018-07-24 16:28:54
【问题描述】:
我正在解决这个问题: 一个孩子正在跑上 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
【问题讨论】:
-
其他情况的答案是否正确?
-
因为你得到了
f(0) = 1,如果N为0,你应该返回1。你可以争辩说只有一种方法可以不爬楼梯(什么都不做)。