Это первый раз, когда я использовал рекурсию, чтобы сделать что-то другое, чем найти факториал числа. Я строю программу, чтобы найти слова в болотной доске. Ниже приведена функция, которая приводит к нарушениям:C++ рекурсия segfault. Можете ли вы помочь мне понять, что я делаю неправильно?
void findWord(vector<string>& board, set<string>& dictionary,
string prefix, int row, int column){
prefix += getTile(board, row, column);
if(prefix.length() > biggestWordLength)
return;
if(isOutOfBounds(row, column))
return;
if(isWord(prefix, dictionary) == 1)
foundWords.insert(prefix);
if(isWord(prefix, dictionary) == 0)
return;
//Note: this does not prevent using the same tile twice in a word
findWord(board, dictionary, prefix, row-1, column-1);
findWord(board, dictionary, prefix, row-1, column);
findWord(board, dictionary, prefix, row-1, column+1);
findWord(board, dictionary, prefix, row, column-1);
findWord(board, dictionary, prefix, row, column+1);
findWord(board, dictionary, prefix, row+1, column-1);
findWord(board, dictionary, prefix, row+1, column);
findWord(board, dictionary, prefix, row+1, column+1);
}
Вы должны поместить проверку границ * перед * частью, где вы добавляете символ в конец 'prefix' – Brian