擅长:python、mysql、java
<p>当您在递归中遇到局部变量的问题时,我建议您添加一个包装器函数。下面这个呢?在</p>
<pre><code>def fact_wrapper(n):
lst = [1]
def fact(n):
if n == 0 or n==1:
return 1
else:
a = n * fact(n-1)
lst.append(a)
return a
fact(n)
return lst
print(fact_wrapper(5))
</code></pre>
<p>输出:</p>
^{pr2}$
<p>如果递归不是那么重要,您可以编写一个简单的生成器:</p>
<pre><code>def factorial(n):
result = 1
for i in range(1,n+1):
result *= i
yield result
</code></pre>
<p>然后</p>
<pre><code>print list(factorial(5))
</code></pre>
<p>输出:</p>
^{pr2}$
<p>或者,也可以使用<code>next()</code>来延迟计算值。如果您不熟悉python生成器,您可能会看到<a href="https://docs.python.org/2/tutorial/classes.html#generators" rel="nofollow noreferrer">this</a>。在</p>