HuaHuoCG 发表于 2024-4-24 21:28

递归的最佳用法!(用递归做一个走迷宫)

分享一个用递归走迷宫的例子{:1_918:}
#include<iostream>
using namespace std;

char arr[] = {
       "011111111111110@",
       "0000000000000001",
       "1111101111011001",
       "0111111111000101",
       "1100100000010101",
       "11$0001011110001",
       "1111111111111111",
};

void test()
{
        for (int i = 0; i < 7; i++)
        {
                for (int n = 0; n < 17; n++)
                {
                        cout << arr;
                }
                cout << endl;
        }
}
void maze(int x, int y)
{
        system("cls");
        test();

        if (arr == '$')
        {
                cout << "成功!" << endl;
                system("pause");
                exit(0);
        }
        arr = '?';

        if (arr == '0' || arr == '$')
        {
                maze(x, y + 1);
        };
        if (arr == '0' || arr == '$')
        {
                maze(x - 1, y);
        };
        if (arr == '0' || arr == '$')
        {
                maze(x + 1, y);
        };
        if (arr == '0' || arr == '$')
        {
                maze(x, y - 1);
        };

        arr = 'Q';
        return;
}

int main(void)
{
        test();
        int x = 0;
        int y = 0;
        maze(x, y);
       
        return 0;
}

大家觉得如何,嘿嘿。

fatyung 发表于 2024-4-25 07:37

递归是指函数在执行过程中调用自身的编程技术。递归通常用于解决可分解为更小相似子问题的问题,如搜索、排序、树遍历和图遍历等。递归函数必须有一个终止条件,否则将无限递归下去,导致栈溢出。递归的优点是代码简洁、易于理解,缺点是可能导致性能问题,因为需要在每次调用时保存当前状态,消耗更多的内存和处理时间

繁花落尽秭归陈 发表于 2024-4-25 09:19

如果是迷宫有闭环 有可能会死循环{:301_999:}

你好,再见 发表于 2024-4-25 10:11

dfs是很必要学习的算法呢{:301_978:}
页: [1]
查看完整版本: 递归的最佳用法!(用递归做一个走迷宫)