亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:編寫斐波那契協程

Python:編寫斐波那契協程

MMMHUHU 2022-10-25 14:55:33
我想編寫一個在 pythonfibonacci中表現得像 a 的函數。coroutine這基本上是我想要完成的事情:def fibonacci(limit: int) -> int:    ...fib = fibonacci(limit=100_000_000)next(fib)fib.send(10)  # -> 55next(fib)  # -> 89fib.send(15) # -> 610...我試圖根據下面的代碼編寫一些邏輯,但不幸的是這不是我想要的: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協程的正確邏輯,我對如何正確地制作它有點困惑,在此先感謝!
查看完整描述

1 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

您可以存儲一個附加index的跟蹤最近產生的斐波那契數的索引。然后,您可以steps根據提供的值計算您需要推進序列的數量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


查看完整回答
反對 回復 2022-10-25
  • 1 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號