递归的最佳用法!(用递归做一个走迷宫)
分享一个用递归走迷宫的例子{: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;
}
大家觉得如何,嘿嘿。 递归是指函数在执行过程中调用自身的编程技术。递归通常用于解决可分解为更小相似子问题的问题,如搜索、排序、树遍历和图遍历等。递归函数必须有一个终止条件,否则将无限递归下去,导致栈溢出。递归的优点是代码简洁、易于理解,缺点是可能导致性能问题,因为需要在每次调用时保存当前状态,消耗更多的内存和处理时间 如果是迷宫有闭环 有可能会死循环{:301_999:} dfs是很必要学习的算法呢{:301_978:}
页:
[1]