擅长:python、mysql、java
<p>正如我在评论中所写的那样:这个函数根本不是递归函数。<br/>
递归意味着,一个函数调用它自己来完成它的目的。此调用可以是间接的,这意味着函数使用将再次调用第一个函数的helper函数。<br/>
但你的代码并不能同时涵盖这两种情况。在</p>
<p>递归函数总是有特定的体系结构:</p>
<ul>
<li><p>被调用后的第一件事应该是测试是否达到了原始大小写(或选项中的一个原始大小写)。如果是这样,它就会返回。</p></li>
<li><p>如果没有,它将计算所需的一切并将结果再次传递给自己,
直到达到原始大小写,嵌套函数调用将一个接一个地完成。</p></li>
</ul>
<p>递归的一个著名用法是<a href="http://en.wikipedia.org/wiki/Quicksort" rel="nofollow">quicksort</a>算法:</p>
<pre><code>def quicksort(alist):
if len(alist) < 2:
return alist # primitive case: a list of size one is ordered
pivotelement = alist.pop()
# compute the 2 lists for the next recursive call
left = [element for element in alist if element < pivotelement]#left = smaller than pivotelemet
right = [element for element in alist if element >= pivotelement]#left = greater than pivotelemet
# call function recursively
return quicksort(left) + [pivotelement] + quicksort(right)
</code></pre>
<p>所以“停止”必须是原始情况的返回。这对于递归是至关重要的。你不能随便爆发。在</p>