擅长:python、mysql、java
<p>原因是你没有正确地限定变量的范围。在</p>
<p>您调用<code>cubepal</code>,并且<code>cubepal</code>初始化{<cd3>},现在当您执行递归调用时,<code>i</code>是一个等于<code>3</code>的局部变量。在</p>
<pre><code>def cubepal(i):
if str(i**3)==str(i**3)[::-1]:
return i**3
else:
return cubepal(i+1)
</code></pre>
<p>用<code>cubepal(3)</code>调用它。在</p>
<p>尽管对于这种情况,最好不要使用递归:如果预期<code>i</code>将非常大(这里不是这样),但是对于内存效率低下的Python interpeter,可能会导致调用堆栈随结果的值而伸缩。在</p>
<p>更好的处理方法是使用<code>while</code>循环。在</p>
^{pr2}$
<p>这通常也更有效,因为调用函数会导致簿记和调用堆栈的一些开销。在</p>