我试图自学python,但在递归方面遇到了困难。我已经完成了经典的递归函数(factorial,fibonacci numbers…),但我将回顾旧代码,并尝试将我的大部分迭代函数转换为递归函数以供实践。在
这是我撞到的墙:
我做了一个地牢爬虫前不久,我试图取代一个for循环,我曾用来揭示我的精灵附近的广场。所以当精灵被放置时,他/她会看到他/她所在的瓷砖以及相邻的和对角的方块(总共9个,包括阿凡达所在的那个),其他组成房间的瓷砖都被隐藏起来了。我认为这是视野半径1。对于视图半径2,我想让char看到半径为1的正方形加上与这些瓷砖相邻的所有瓷砖。当时我不知道如何用for循环来实现它,所以我只实现了一个更简单的方案。在
我觉得这个可视性函数可以递归地编写,但我很难想出一个基本情况和我的递归步骤是什么。我的for循环只获取了avatar pos并在avatar pos+radius的范围内迭代,我对x,y坐标做了这个操作。在
至于把它转换成递归函数,我真的很困惑。我做了很多搜索,试图找到一个线索,但只找到一些复杂的主题,比如:FOV使用递归阴影投射,这是远远超出我的范围。在
任何帮助都将不胜感激。在
这样的怎么样:
^{pr2}$seen
将是set
。每次从外部调用visible
“时,都会提供一个空集:seen
集也可以被初始化来实现战争迷雾(或者至少奇怪的是不可见的方块;)。。。在我发现用单词来表达递归非常有用。这个算法说的基本上是“在半径N处可见的就是在半径N-1处可见的”。就像,呃,边缘变大了。在
相关问题 更多 >
编程相关推荐