鱼C论坛

 找回密码
 立即注册
查看: 1924|回复: 1

[已解决]python 迭代和递归

[复制链接]
发表于 2023-5-8 20:21:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def fib(n):
    a=1
    b=1
    c=1
    while n>2:
        c=a+b
        a=b
        b=c
        n -= 1
    return c

fib(12)
144

请教大神,那个这里为啥是b=c呀,不是应该a=b,c=a+b吗
最佳答案
2023-5-8 20:21:47
您好,关于这个问题,是因为在计算斐波那契数列时,需要用到前两个数的和来计算出当前的数。因此,在每次循环时,需要更新前两个数的值,而这个过程可以通过交换变量的值来实现。

具体来说,在代码中,a表示当前数列的第一个数,b表示当前数列的第二个数,而c则表示当前要计算的数。在每次循环中,需要将a和b的值更新为前两个数,即将b的值赋给a,将c的值赋给b。这样,在下一次循环中,a和b就分别表示了前两个数,可以用来计算出下一个数。

因此,在代码中,b=c的操作就是将当前要计算的数赋值给b,以便在下一次循环中使用。而c=a+b的操作则是计算出下一个数的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-8 20:21:47 | 显示全部楼层    本楼为最佳答案   
您好,关于这个问题,是因为在计算斐波那契数列时,需要用到前两个数的和来计算出当前的数。因此,在每次循环时,需要更新前两个数的值,而这个过程可以通过交换变量的值来实现。

具体来说,在代码中,a表示当前数列的第一个数,b表示当前数列的第二个数,而c则表示当前要计算的数。在每次循环中,需要将a和b的值更新为前两个数,即将b的值赋给a,将c的值赋给b。这样,在下一次循环中,a和b就分别表示了前两个数,可以用来计算出下一个数。

因此,在代码中,b=c的操作就是将当前要计算的数赋值给b,以便在下一次循环中使用。而c=a+b的操作则是计算出下一个数的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 03:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表