我正在从文本文件中读取一个迷宫,我使用"@"作为面包屑,使用递归导航迷宫。它的读取和打印很好,但是当我添加实际逻辑时,它出错了。我不确定我是否不理解递归我知道它会自调用,直到满足基本情况(E/退出(我有一些弹出的错误,说我的"@"有语法错误,但没有红线(我正在使用 Visual Studios(也说
错误我1 错误 C2660:"迷宫逃逸":函数不接受 2 个参数
不确定我错过了什么。
const int ROWS = 10;
const int COLS = 10;
bool mazeEscape(char maze[ROWS][COLS],int row,int col)
{
bool result = false;
if (row < 0 || row >= ROWS || col < 0 || col >= COLS)
return false;
if (mazeEscape(row - 1, col)) // recursively move up
result = true;
else if (mazeEscape(row + 1, col)) // recursively move down
result = true;
else if (mazeEscape(row, col - 1)) // recursively move left
result = true;
else if (mazeEscape(row, col + 1)) // recursively move right
result = true;
// Pick up the bread crump
return result;
if (maze[row][col] == '@')
return true;
if (mazeEscape(row - 1, col)) // recursively move up
return true;
else if (mazeEscape(row + 1, col)) // recursively move down
return true;
else if (mazeEscape(row, col - 1)) // recursively move left
return true;
else if (mazeEscape(row, col + 1)) // recursively move right
return true;
else
return false;
}
Error 1 error C2660: 'mazeEscape' : function does not take 2 arguments
阅读它。
bool mazeEscape(char maze[ROWS][COLS],int row,int col)
这是 3 个参数。
if (mazeEscape(row - 1, col))
这是 2 个参数。
2 != 3...
您提供了以下内容作为代码库:
const int ROWS = 10;
const int COLS = 10;
bool mazeEscape(char maze[ROWS][COLS],int row,int col) {
bool result = false;
if (row < 0 || row >= ROWS || col < 0 || col >= COLS)
return false;
if (mazeEscape(row - 1, col)) // recursively move up
result = true;
else if (mazeEscape(row + 1, col)) // recursively move down
result = true;
else if (mazeEscape(row, col - 1)) // recursively move left
result = true;
else if (mazeEscape(row, col + 1)) // recursively move right
result = true;
// Pick up the bread crump
return result;
if (maze[row][col] == '@')
return true;
if (mazeEscape(row - 1, col)) // recursively move up
return true;
else if (mazeEscape(row + 1, col)) // recursively move down
return true;
else if (mazeEscape(row, col - 1)) // recursively move left
return true;
else if (mazeEscape(row, col + 1)) // recursively move right
return true;
else
return false;
}
每次调用 mazeEscape()
你只向它们传递两个参数,它们似乎是行和列值。您的函数定义采用您缺少的二维字符数组。同样,在您调用return result
的第一个系列if ... else if ... else statement
之后,这将阻止您执行其下方的任何行。您是否打算执行其下方的if
和if...else if...else
语句?