我試圖編寫代碼以檢查是否可以通過遵循特定規則來到達數組的末尾。您從整數數組的第一個元素開始,存儲在該位置的數字是您可以向前或向後進行多少次跳躍。目標是到達由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