擅长:python、mysql、java
<p>请看下面的代码:</p>
<pre><code>def get_range():
...
else:
...
get_guess()
return Random_Number
def get_guess():
...
else:
validate()
return Guess
def validate():
Random_Number = get_range()
Tries = locals()
Guess = get_guess()
...
</code></pre>
<p>假设您在<code>get_guess</code>并且到达<code>else</code>关闭点,那么您调用<code>validate</code>。下面是发生的情况:</p>
<ol>
<li><code>get_guess</code>调用<code>validate</code></li>
<li><code>validate</code>立即调用<code>get_range</code></li>
<li><code>get_range</code>调用<code>get_guess</code></li>
<li>现在我们回到<code>get_guess</code>,请参见(1)</li>
</ol>
<p>因此,您的代码进入无限间接递归</p>
<p>请注意,它在<code>validate</code>中永远不会通过<code>Random_Number = get_range()</code>,您在<code>get_range</code>和<code>validate</code>中都调用了<code>get_guess</code></p>
<p>因此,在将随机数返回到<code>Random_Number = get_range()</code>之前,<code>get_range</code>将尝试<code>get_guess</code>并立即丢弃其返回值(这就是<code>get_guess()</code>的作用)。假设<code>get_range</code>最终返回。现在您将再次调用<code>Guess = get_guess()</code>,从而要求用户猜两次。我认为这里有一个逻辑缺陷</p>