吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 679|回复: 3
收起左侧

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

  [复制链接]
HuaHuoCG 发表于 2024-4-24 21:28
分享一个用递归走迷宫的例子
[C++] 纯文本查看 复制代码
#include<iostream>
using namespace std;

char arr[][17] = {
	 "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[i][n];
		}
		cout << endl;
	}
}
void maze(int x, int y)
{
	system("cls");
	test();

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

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

	arr[x][y] = '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
你好,再见 发表于 2024-4-25 10:11
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 20:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表