擅长:python、mysql、java
<p>最简单的方法是将计数器向下传递给每个函数,而不是尝试访问函数范围外的变量:</p>
<pre><code>def get_limit():
try:
return 1 + get_limit()
except RecursionError:
return 2
</code></pre>
<p>这给了我<code>1000</code>,就像<code>sys.getrecursionlimit()</code></p>
<hr/>
<p>为什么?</strong></p>
<p>因此,在函数的每次调用中,函数都会在可以进行多少次递归调用的结果中添加一次。这个问题的答案“还可以进行多少次递归调用?”是由函数本身简单地回答的,因此我们返回<code>1</code>+<code>get_limit()</code>,因为我们被调用了,所以我们必须再返回一次</p>
<p>最后,我们必须定义一个基本情况,它将位于树的底部,并处理“可以进行多少[更多]递归调用?”的答案是<code>RecursionError</code>,即“不再”。在本例中,真正的答案是<code>1</code>,但由于实际函数将被调用一次,因此我们应该返回<code>2</code>,以说明树/堆栈顶部的调用,因此在我的示例中,我们的结果是<code>1000</code>,而不是返回<code>999</code>时的结果</p>