我为前 22 项做了一个简单的斐波那契数列计算器:
i=1
n=0
while i<=20000:
i = i + n
n = i - n
print(i)
看起来结果是正确的
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
但我似乎无法在网上的任何地方找到类似的代码。我认为这是一个很大的危险信号。有人能告诉我这里出了什么问题吗?这是低效的代码吗?
最佳答案
不,该代码没问题。你在网上找不到类似代码的可能原因是在斐波那契中使用减法运算符是不常见的,它是一个纯加法函数,t<sub>n</sub> = t<sub>n-2</sub> + t<sub>n-1</sub>
.
它当然有效,因为加法/减法既可交换又可结合,这意味着术语的顺序和分组并不重要:
i = i + n # iNew = iOld + nOld
n = i - n # nNew = (iNew) - nOld
# = (iOld + nOld) - nOld
# = iOld + (nOld - nOld)
# = iOld + (0)
# = iOld
使用减法可以让你绕过对第三个变量的需要,在比 Python 更小的语言中,它会是这样的:
nextN = i + n
i = n
n = nextN
在 Python 中,您实际上不需要,因为您可以使用元组赋值,例如:
(n, i) = (i, n + i)
这样,=
右边的一切在左边的任何赋值之前计算。
关于python - 斐波那契数列计算器似乎是正确的,但无法在网上找到类似的代码。有什么不对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56050704/