大大大大力无限 发表于 2023-5-8 20:21:19

python 迭代和递归

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吗

isdkz 发表于 2023-5-8 20:21:47

您好,关于这个问题,是因为在计算斐波那契数列时,需要用到前两个数的和来计算出当前的数。因此,在每次循环时,需要更新前两个数的值,而这个过程可以通过交换变量的值来实现。

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

因此,在代码中,b=c的操作就是将当前要计算的数赋值给b,以便在下一次循环中使用。而c=a+b的操作则是计算出下一个数的值。
页: [1]
查看完整版本: python 迭代和递归