擅长:python、mysql、java
<p>低效的方法是使用循环:</p>
<pre><code>def fibR(n):
if n == 1 or n ==2:
return 1
return fibR(n-1) + fibR(n-2)
for i in range(1,6):
print(fibR(i))
</code></pre>
<p>但是,这是低效的,因为它会多次计算下斐波那契数。可以使用数组存储中间斐波那契数并提高性能:</p>
<pre><code>def fibR(n):
if n > len(fibR.values) - 1:
for i in range(len(fibR.values), n+1):
fibR.values.append(fibR(i-2) + fibR(i-1))
return fibR.values[n]
fibR.values = [0, 1, 1]
for i in range(1,6):
print(fibR(i))
</code></pre>