曦玥槐花晨 2023-04-07 09:30 采纳率: 100%
浏览 27
已结题

python生成器实现斐波那契数列

img

以上是生成斐波那契数列的代码,问最后一行是什么意思
并解释一下代码

  • 写回答

3条回答 默认 最新

  • a5156520 2023-04-07 09:43
    关注

    最后一行的意思是,把back2的值赋值给back1, 再把back1+back2的和赋值给back2。

    fib()函数是一个生成器函数,它的作用是,当每次调用next()方法,就可以返回这个函数计算出的当前项的斐波那契数列的值。

    测试代码如下:

    参考链接:



    
    def fib():  # 生成器函数,用于返回当前项斐波那契数列的值
        #  https://www.codenong.com/41615756/
        back1, back2 = 0,1 # back1赋值第一个值0,back2赋值为第二个值1
        while True:
            
            yield back1  # 返回back1的值,但是函数不会退出,等待下一次调用next()方法
            #  下面的作用相当于,把back2的值赋值给back1, back1+back2的和赋值给back2
            #  back1  back2  back1+back2
            #     1     1      2
            # print("before: back1=",back1,",back2=",back2)
            back1,back2 = back2,back1+back2
            # print("after: back1=",back1,",back2=",back2)
            
    
    fibNum = fib()
    for i in range(0,11):
        
        # https://blog.csdn.net/weixin_44992737/article/details/125860953
        # https://qb.zuoyebang.com/xfe-question/question/b1565033a69fae0837095a71193fcdee.html
        # 调用next()方法来获取一项斐波那契数列的值
        print("斐波那契数列第"+str(i)+"项为:"+str(next(fibNum)))
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 创建了问题 4月7日