擅长:python、mysql、java
<p>在您的代码中,算法将查找给定输入字段左侧的一个字段,而在递归调用中,将再次调用初始字段上的函数。(你显然不想要的,因为它会导致无限递归)</p>
<p><strong>方法1</strong></p>
<p>在仍然使用递归的情况下解决这个问题的一种方法是指定一个<em>方向</em>,递归应该在该方向查找更多相同类型的字段。例如,对第一个字段的正北方(或上面的<em>)的调用可以递归地向北或东(或<em>右</em>),向东的调用向南(<em>低于</em>)和以东,依此类推。在</p>
<p>通过智能地选择第一步,您可以确保扫描区域中没有重叠。但是,它需要一些调整来指定递归调用应该扫描的方向。<strong>但是:</strong>请注意,如果区域悬垂,则此算法将不起作用,因此,如果不是,只需向右和向上移动就可以到达起点东北部的每个区域。在</p>
<p>有更多类似这样的算法也能解决上述问题。看看<a href="http://en.wikipedia.org/wiki/Flood_fill" rel="nofollow">Flood Filling on wikipedia</a>。在</p>
<p><strong>方法2</strong></p>
<p>您还可以以某种方式保存已经访问过的字段,如果字段已经访问过,则直接从递归调用返回。在</p>