擅长:python、mysql、java
<p>如果不知道所有变量都有什么值,就很难看到发生了什么,但我可以这么说:</p>
<ol>
<li><p>看起来最底层的<code>return mintha(x)</code>永远不会到达,因为上面if/else中的每个子句都会返回一些内容。</p></li>
<li><p>以<code>return totalPay and mintha (x+10)</code>结尾的else子句的行为稍微不直观。正如@MichaelVeksler在上面指出的,如果<code>totalPay</code>为假(即0),则返回<code>mintha(x+10)</code>,否则返回<code>totalPay</code>。</p></li>
</ol>
<p>因此,您编写的函数return if/else逻辑如下:</p>
<pre class="lang-py prettyprint-override"><code>if (12*x - totalPay) >= 0:
return x
else:
if totalPay == 0:
return totalPay
else:
return mintha (x+10) # recurse
</code></pre>
<p>我将仔细检查条件<code>if (12*x - totalPay) >= 0:</code>,并确保它最终将计算为true,因为这将使您脱离无限递归。(这似乎永远不会成为事实,因为<code>totalPay</code>增加了[也许?]每一个<code>totalPay = unpaid + inc</code>语句。)</p>
<p>另一种打破无限递归的方法是如果<code>totalPay</code>是0,但我不确定这是什么意思。你知道吗</p>
<blockquote>
<p><em>Note:</em> This answer does not speak to issues with the code producing a meaningful answer, it just tries to explain why infinite recursion is happening.</p>
</blockquote>