首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带递归的堆栈溢出错误

带递归的堆栈溢出错误
EN

Stack Overflow用户
提问于 2014-07-06 16:01:30
回答 1查看 169关注 0票数 0

我目前正在联合开发一个游戏,我决定使用深度优先搜索来生成一个迷宫。这涉及递归,可怕的野兽,即使我似乎正确地设置了递归,我仍然会得到堆栈溢出错误。我看了它一段时间了,但我似乎找不到错误。

以下是代码:

代码语言:javascript
复制
private void MazeDigger(int[,] maze, int r, int c){

    int[] directions = new int[] {1, 2, 3, 4};
    Shuffle(directions);

    for(int i = 0; i < directions.Length; i++){

        switch(directions[i]){
        case 1:

            if(r-2 <= 0)
            {
                continue;
            }

            if(maze[r-2, c] != 0)
            {
                maze[r-2, c] = 2;
                maze[r-1, c] = 2;
                MazeDigger(maze, r-2, c);
            }
            break;

        case 2:

            if(c+2 >= MazeWidth - 1)
            {
                continue;
            }

            if(maze[r, c+2] != 0)
            {
                maze[r, c+2] = 2;
                maze[r, c+1] = 2;
                MazeDigger(maze, r, c+1);
            }
            break;

        case 3:

            if(r+2 >= MazeHeight - 1)
            {
                continue;
            }

            if(maze[r+2, c] != 0)
            {
                maze[r+2, c] = 2;
                maze[r+1, c] = 2;
                MazeDigger(maze, r+2, c);
            }
            break;

        case 4:

            if(c-2 <= 0)
            {
                continue;
            }

            if(maze[r, c-2] != 0)
            {
                maze[r, c-2] = 2;
                maze[r, c-1] = 2;
                MazeDigger(maze, r, c-2);
            }
            break;
        }
    }
}

真的很简单。我创建一个具有四个方向的数组,随机地遍历它们,然后使用for循环在数组中运行。其中有一个开关语句,它基本上会将迷宫中的不同点标记为at = 2,这是因为代码的另一部分使用模数在这些位置生成多维数据集。任何帮助将不胜感激,如果我没有提供足够的信息,请告诉我,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-06 18:36:28

没有出口条件,否则你把支票搞砸了。

您使用2标记每个已访问的单元格,但如果它不等于0,则将再次访问它。永无止境的故事

3x3迷宫可以工作,因为每个单元格都不能检查边界,没有递归发生。4x4迷宫应该已经失败了,但它可能在特定的启动条件下工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24597723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档