我正在寻找一种方法来查找总和与斐波那契数列元素的所有组合,其中给定的限制等于相同的值。我知道combinations()
fromitertools
是我们解决此类问题的最佳选择,但由于我是 Python 新手,我想知道如何保留匹配组合(因为只有一个是正确的,因为这不是算法的结束)。
我目前有:
# Call Fibonacci sequence with a given limit:
def fib1(n):
result = []
a, b = 1, 1
while a < n:
result.append(a)
a, b = b, a + b
return result
# Wrong code, skeleton:
def zeckendorf(n):
from itertools import combinations
seq = fib1(n)
row = []
sum = 0
for i in combinations(seq, len(seq)):
sum += i
row.append(i)
if sum > n:
sum = 0
row = []
continue
elif sum == n:
break
return row
现在我知道第二点在很多方面都是错误的。另外,我犯了一个错误,试图将元组添加到整数。我只需要知道如何使用 itertools 模块分别遍历这些组合的单独元素。只有 sum 'n' 的组合对我有用。