擅长:python、mysql、java
<p>如果必须使用递归(tail recursive),这是另一种方法。在许多其他语言中,就空间复杂性而言,这比常规递归更有效。不幸的是,在python中情况并非如此,因为它没有内置的优化尾部调用的支持。尽管如此,如果你正在学习递归的话,这是一个值得注意的好习惯。</p>
<pre><code>def helper(l, s, i):
if len(l) == 0:
return 0
elif i < len(l) - 1:
return helper(l, s + l[i], i + 1)
else:
return s + l[i]
def listSum(l):
return helper(l, 0, 0)
</code></pre>