为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信