擅长:python、mysql、java
<p>我认为错误在于调用数组:</p>
<pre><code>for i in range(0, n):
a = signature[i]
b = signature[2*i]
c = signature[3*i]
</code></pre>
<p>…应该是。。。你知道吗</p>
<pre><code>for i in range(0, n):
a = signature[i]
b = signature[1+i]
c = signature[2+i]
</code></pre>
<p>否则,当n=10时,您将访问不存在的签名(30)。你知道吗</p>
<p>还有其他的bug,比如<code>s=a+b+b</code>而不是<code>s=a+b+c</code>,单靠这个编辑并不能解决这个问题,但是这可能就是您收到越界错误的原因。你知道吗</p>
<p>否则最大的错误是使用两个不同的数组。您的<code>tribo</code>数组从未以1开头初始化,因此无法成为所需的结果。为了保持核心代码不变,我只需将for循环的范围更改为<code>(0, n-3)</code>,或者使用<code>signature</code>代替tribo。你知道吗</p>
<pre><code>def tribonacci(signature, n):
for i in range(0, n-3):
a = signature[i]
b = signature[1+i]
c = signature[2+i]
s = a+b+c
a = b
b = c
c = s
signature.append(c)
return signature
print(tribonacci([1, 1, 1], 10))
</code></pre>