我想編寫一個在 pythonfibonacci中表現(xiàn)得像 a 的函數(shù)。coroutine這基本上是我想要完成的事情:def fibonacci(limit: int) -> int: ...fib = fibonacci(limit=100_000_000)next(fib)fib.send(10) # -> 55next(fib) # -> 89fib.send(15) # -> 610...我試圖根據(jù)下面的代碼編寫一些邏輯,但不幸的是這不是我想要的:def fibonacci(limit: int) -> int: a, b = 0, 1 while limit: c: int = (yield b) if c is not None: a, b = b, a + b + c else: a, b = b, a + b limit -= 1誰能幫我找出python fibonacci協(xié)程的正確邏輯,我對如何正確地制作它有點困惑,在此先感謝!
1 回答

慕標琳琳
TA貢獻1830條經(jīng)驗 獲得超9個贊
您可以存儲一個附加index的跟蹤最近產(chǎn)生的斐波那契數(shù)的索引。然后,您可以steps根據(jù)提供的值計算您需要推進序列的數(shù)量send:
def fibonacci(limit):
a, b = 0, 1
index = 1 # the index of the fibonacci number 'b'
while index < limit:
goto = (yield b)
if goto is None:
goto = index + 1
if goto > limit:
break
steps = goto - index
if steps >= 0:
for __ in range(steps):
a, b = b, a + b
else:
for __ in range(-steps):
a, b = b - a, a
index = goto
添加回答
舉報
0/150
提交
取消