fibs = {0: 0, 1: 1}
def fib(n):
if n in fibs: return fibs[n]
if n % 2 == 0:
fibs[n] = ((2 * fib((n/2) - 1)) + fib(n/2)) * fib(n/2)
return fibs[n]
else:
fibs[n] = (fib((n - 1)/2) ** 2) + (fib((n+1)/2) ** 2)
return fibs[n]
def test(n):
count = range(0,n)
seq = []
for i in count:
seq.append(fib(i))
return seq
print test(10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
как сделать это начинается с 1, а не 0, поэтому результатИзменить начальные значения итерации в последовательности Python
[1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
Я попытался изменить выдумки к {1: 1,2: 2 } но это не сработало
Вы можете заменить 'count = range (0, n)' на 'count = range (2, n + 2)' для получения ожидаемого результата. – Nicolas