Justheartyoung 发表于 2020-5-21 22:13:53

恳请大佬留步片刻 为小弟解疑

def Fib(n):
    a,b = 0,1
    print(a)
    while n-1:
      a,b,n = b,a+b,n-1

print(Fib(10))

题目:斐波那契数,其中a,b,n = b,a+b,n-1这句什么意思,谢谢

Stubborn 发表于 2020-5-21 22:15:33

赋值啊,
a = 5
a,b = 5,6
a,b,c = 5,6,7

不理解吗?

liuzhengyuan 发表于 2020-5-21 22:17:30

相当于同时运行
a = b
b = a+b
n = n-1

Justheartyoung 发表于 2020-5-21 22:18:35

Stubborn 发表于 2020-5-21 22:15
赋值啊,
a = 5
a,b = 5,6


请问 如果赋值的话是不是等于
a=b
b=a+b
n = n-1
如果是 那输出结果就是0
1
2
4
8
16
32
64
128
256
而不是斐波那契数

Justheartyoung 发表于 2020-5-21 22:19:08

liuzhengyuan 发表于 2020-5-21 22:17
相当于同时运行

请问 如果赋值的话是不是等于
a=b
b=a+b
n = n-1
如果是 那输出结果就是0
1
2
4
8
16
32
64
128
256
而不是斐波那契数

liuzhengyuan 发表于 2020-5-21 22:19:47

Justheartyoung 发表于 2020-5-21 22:19
请问 如果赋值的话是不是等于
a=b
b=a+b


同时执行
不是分步执行

a 先 等于 b 了,那么答案就会出错
要同时执行才可以

Justheartyoung 发表于 2020-5-21 22:20:40

liuzhengyuan 发表于 2020-5-21 22:19
同时执行
不是分步执行



谢谢你 明白了

Stubborn 发表于 2020-5-21 22:27:48

Justheartyoung 发表于 2020-5-21 22:18
请问 如果赋值的话是不是等于
a=b
b=a+b


这里就有一个交换的概念了。一般其他程序,交换两个变量,a,b的值,都会用一个新的临时变量c去储存。

c = a
a = b
b = c

你问的这个问题也是这里产生的。不过python的语法支持同时赋值
a,b = b , a

这样就不需要临时的c变量
页: [1]
查看完整版本: 恳请大佬留步片刻 为小弟解疑