Нет, этот код в порядке. Вероятная причина, по которой вы не можете найти подобный код в Интернете, заключается в том, что в Фибоначчи необычно использовать оператор вычитания, который является чисто аддитивной функцией, 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)
При этом все справа от =
оценивается перед любым назначением слева.