编写一个函数Tribonacci(signature, n),如果我们要以[1,1,1]作为起始输入,可以得到广义的斐波那契额数列:[1, 1 ,1, 3, 5, 9, 17, 31, …]
输入参数signature是一个列表,包含了起始的3个数字,n代表返回的数列的长度(非负),你需要返回完整的广义斐波那契额数列
法一:
def tribonacci(signature, n):
[signature.append(sum(signature[-3:])) for i in range(3, n)]
return signature[:n]
print(tribonacci([1,1,1],10))
print(tribonacci([300,200,100],0))
print(tribonacci([0.5,0.5,0.5],30))
法二:
def tribonacci(s, n):
for i in range(3, n):
s.append(s[i-1] + s[i-2] + s[i-3])
return s[:n]
print(tribonacci([1,1,1],10))
print(tribonacci([300,200,100],0))
print(tribonacci([0.5,0.5,0.5],30))