擅长:python、mysql、java
<p>基本(但不是简单的)递归斐波那契解如下:</p>
<pre><code>>>> def fib(num, first=0, second=1):
... if not num: return second
... return fib(num-1, second, first+second)
...
>>> fib(5)
8
</code></pre>
<p>您可以通过两种方式保存中间值:创建一个<code>list</code>和<code>append()</code>,或者让函数<code>return</code>一个<code>tuple</code>。你知道吗</p>
<p>方法1:</p>
<pre><code>>>> def fibl(num, first=0, second=1):
... results.append(second)
... if not num: return
... return fibl(num-1, second, first+second)
...
>>> results = []
>>> fibl(5)
>>> results
[1, 1, 2, 3, 5, 8]
</code></pre>
<p>方法2:</p>
<pre><code>>>> def fibr(num, first=0, second=1, *results):
... if not num: return results+(second,)
... return fibr(num-1, second, first+second, *(results + (second,)))
...
>>> fibr(5)
(1, 1, 2, 3, 5, 8)
</code></pre>