C++ 中的递归迷宫



我正在从文本文件中读取一个迷宫,我使用"@"作为面包屑,使用递归导航迷宫。它的读取和打印很好,但是当我添加实际逻辑时,它出错了。我不确定我是否不理解递归我知道它会自调用,直到满足基本情况(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之后,这将阻止您执行其下方的任何行。您是否打算执行其下方的ifif...else if...else语句?

最新更新