我试图编写代码以检查是否可以通过遵循特定规则来到达数组的末尾。您从整数数组的第一个元素开始,存储在该位置的数字是您可以向前或向后进行多少次跳跃。目标是到达由0值表示的Vector的末尾。递归问题帮助C++
bool Solvable(int start, Vector<int> & squares) {
int steps = squares[start];
int prev = start - steps;
int forward = start + steps;
if (prev >= 0) {
if (squares[prev] != squares[start]) {
return Solvable(prev, squares);
}
}
if (forward < squares.size()) {
if (squares[forward] == 0) return true;
if (squares[forward] != squares[start]) {
return Solvable(forward, squares);
}
}
return false;
}
的代码似乎并没有工作,因为我觉得我缺少的基本情况,但我似乎无法找出其他的基本情况,我需要。
谢谢!
当你说“似乎没有工作”时,你是什么意思?它会达到无限循环吗?行为错误?你能添加一个正方形矢量和预期结果的例子吗? – NirMH