擅长:python、mysql、java
<p>重复计算相同的值,因此请缓存它们:</p>
<pre><code>@functools.lru_cache
def lucas(n):
if n == 0:
return 2
elif n == 1:
return 1
else:
return lucas(n-1) + lucas(n-2)
</code></pre>
<p>或者把最后两个留到下一个:</p>
<pre><code>def lucas(n):
a, b = 2, 1
for _ in range(n):
a, b = b, a + b
return a
</code></pre>
<p>递归版本:</p>
<pre><code>def lucas(n, a=2, b=1):
return lucas(n - 1, b, a + b) if n else a
</code></pre>