擅长:python、mysql、java
<p>您的代码没有更新从递归返回的list1变量。执行<code>fibolist(n-1).append(...)</code>更新下一级返回的列表,但这是一个单独的列表,因此<code>list1</code>不受影响</p>
<p>通过将最后两个值传递给函数本身,也可以使函数更简单:</p>
<pre><code>def fibo(n,a=1,b=1): return [a] if n==1 else [a] + fibo(n-1,b,a+b)
</code></pre>
<p>顺便说一句,斐波那契序列的现代解释是从0,1开始的,而不是从1,1开始的,因此上面的签名应该是<code>def fibo(n,a=0,b=1)</code></p>
<p>输出:</p>
<pre><code>print(fibo(5))
#[1, 1, 2, 3, 5]
</code></pre>