【发布时间】:2018-06-04 02:21:24
【问题描述】:
我正在尝试解决代码战 (http://www.codewars.com) 挑战:
6 kyu:斐波那契、Tribonacci 和朋友
挑战:
考虑一个以 4 个元素的签名开始的 Quadribonacci,每个后续元素都是前 4 个元素的总和,一个 Pentabonacci(好吧,Cinquebonacci 可能听起来更意大利化,但听起来也很糟糕)带有签名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 < len(signature)时有不同的行为。
标签: python python-3.x indexing slice