回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我只学了一个月的Python。这是一个递归函数,我为我的Pygame寻找正确的方法在一个多边形没有撤退。这里是一个五边形,(0,1,2,3,4)是顶点数。你知道吗</p>
<p>但是,此代码使用两个全局变量:</p>
<pre><code>last_poses = {}
route_all = []
</code></pre>
<p>这意味着每次调用它时都必须初始化这两个变量。我也尝试返回所有可用的路线,但它没有正常工作。你知道吗</p>
<p>这个结果来自全局变量,它是正确的:</p>
<pre><code>[{0: 0, 1: 4, 2: 3, 3: 2, 4: 1, 5: 0}, {0: 0, 1: 4, 2: 3, 3: 2, 4: 1, 5: 0}]
</code></pre>
<p>此结果来自返回值:</p>
<pre><code>[{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 0}]
</code></pre>
<p>我的问题是返回没有全局变量的正确值。谁能帮我解决这个问题,我真的很感激。你知道吗</p>
<pre><code>legal_action = ((4,1),(0,2),(1,3),(2,4),(0,3))
def route_cal(start_pos, steps):
global last_poses,route_all
last_poses[steps] = start_pos
steps -= 1
dest_all = list(legal_action[start_pos])
if len(last_poses) >= 2:
for i in dest_all:
if i == last_poses[steps+2]:
dest_all.remove(i)
if steps > 0:
for pos in dest_all:
# route_cal(pos,steps)
return route_cal(pos,steps)
elif steps == 0:
last_poses[steps] = dest_all[0]
route_all.append(last_poses)
return route_all
# return route_all
last_poses = {}
route_all = []
# route_cal(0, 5)
# print route_all
routelines = route_cal(0,5)
print routelines
</code></pre>
<p><a href="http://i.stack.imgur.com/kqm46.jpg" rel="nofollow">Circuit of my game</a></p>