Python:Tribonaci序列-这些代码有什么区别?
我正在尝试解决codewars()挑战: 6 kyu:Fibonacci、Tribonacci和朋友们Python:Tribonaci序列-这些代码有什么区别?,python,python-3.x,indexing,slice,Python,Python 3.x,Indexing,Slice,我正在尝试解决codewars()挑战: 6 kyu:Fibonacci、Tribonacci和朋友们 挑战: 设想一个四元波纳奇以4个元素的签名开始,后面的每个元素都是前4个元素的和,一个五元波纳奇(Cinkuebonacci听起来可能更像意大利语,但听起来也很糟糕)以5个元素的签名开始,后面的每个元素都是前5个元素的和,依此类推 您必须构建一个Xbonacci函数,该函数接受X个元素的签名——记住,下一个元素是最后X个元素的总和——并返回种子序列的前n个元素 但我似乎无法理解这两个函数之
挑战: 设想一个四元波纳奇以4个元素的签名开始,后面的每个元素都是前4个元素的和,一个五元波纳奇(Cinkuebonacci听起来可能更像意大利语,但听起来也很糟糕)以5个元素的签名开始,后面的每个元素都是前5个元素的和,依此类推 您必须构建一个Xbonacci函数,该函数接受X个元素的签名——记住,下一个元素是最后X个元素的总和——并返回种子序列的前n个元素
但我似乎无法理解这两个函数之间的区别。 第一个被拒绝,而第二个被接受 拒绝代码:
def Xbonacci(signature, num):
a_list = signature[:]
final_list = signature[:]
for i in range(0, num-len(signature)):
a = sum( a_list[ :len(a_list)] )
final_list.append(a)
a_list.append(a)
a_list.remove(a_list[0])
return final_list
认可代码:
def Xbonacci(signature,n):
result = signature[:]
for x in range(n-len(signature)):
current_fib = 0
start = len(result) - len(signature)
for y in result[start:]:
current_fib += y
result.append(current_fib)
return result[:n]
我遗漏了什么吗?当
n
时,这两个函数有不同的行为
职能1:
>>> Xbonacci([1, 2, 3], 1)
[1, 2, 3]
职能2:
>>> Xbonacci([1, 2, 3], 1)
[1]
由于质询显示“返回种子序列的前n个元素”,因此第一个函数不正确。当
n
时,这两个函数的行为不同。