擅长:python、mysql、java
<p>你不检查你的行动,直到为时已晚。观察:</p>
<pre><code>move = raw_input("")
if left == 1:
print 'you have already been here'
return roomOneMoves()
if right == 1:
print 'you have already been here'
return roomOneMoves()
if move == 'a':
roomOneLeft()
if move == 'd':
roomOneRight()
</code></pre>
<p>如果用户真的向左走了,你只想计算<code>left == 1</code>部分,不是吗?相反,嵌套if语句,如下所示:</p>
<pre><code>move = raw_input("")
if move == 'a':
if left:
print 'you have already been here'
return roomOneMoves()
roomOneLeft()
if move == 'd':
if right:
print 'you have already been here'
return roomOneMoves()
roomOneRight()
</code></pre>
<p>此外,您应该重新考虑数据结构,使用具有布尔值或类似值的字典,而不是全局变量。此外,由于大多数Python解释器无法有效地计算<a href="http://en.wikipedia.org/wiki/Tail_recursion" rel="nofollow">tail recursion</a>,因此您可能希望使用迭代的主循环,而不是递归地调用下一个函数。你知道吗</p>