C ++中的递归迷宫

时间:2016-03-30 02:10:24

标签: c++ recursion

我正在使用' @&#39作为使用递归导航迷宫的面包屑。它读取和打印都很好,但是当我添加实际逻辑时它出错了。我不确定我是否不理解递归我知道它会在满足基本情况之前调用自己(E /退出)我有一些错误弹出说我有语法错误我的' @'但是没有红线(我使用Visual Studios)也说

  

错误1错误C2660:' mazeEscape' :function不带2个参数

我不确定我错过了什么。

T

2 个答案:

答案 0 :(得分:0)

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 ...

答案 1 :(得分:0)

您提供了此代码库:

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()的每次调用只传递两个参数,它们似乎是行和列值。您的函数定义采用缺少的二维char数组。在您第一个if ... else if ... else statement系列调用return result后,这将阻止您执行其下方的任何行。您打算执行if&amp;它下面有if...else if...else个陈述?