擅长:python、mysql、java
<p>是的,如果不是尾部递归,那么效率可能会降低。递归会为内存不足的过大数字创建堆栈帧。正确的方法是使用尾部递归来表达它。您只需要使用一个变量来存储结果<code>acc</code>,这里它将在变量中计算结果,而不是进行递归函数调用</p>
<pre><code>def power2(base,exponent,acc):
if exponent == 0:
return acc
return power2(base,exponent-1,acc*base)
print(power2(10,2,1)) #start acc from 1 initially
</code></pre>
<p>但是python不是尾部优化的,所以这是这里使用尾部优化的方法</p>
^{pr2}$