Быстрый поиск в интернете покажет вам несколько интересных способов реализации кода Фибоначчи.Основными из них являются: итерация и рекурсия.Проблема с вашим кодом в том, что вы как бы смешали их вместе.
Если вы хотите использовать Recurssion, вам не хватает основных ингредиентов: условие остановки и фактический шаг (поскольку вы ничего не возвращаете).Чтобы использовать Recurssion, вы должны убедиться, что он остановится в какой-то момент.Для этого мы используем условия остановки.В нашем случае условиями остановки являются известные значения: 0
и 1
.Поэтому мы хотим что-то вроде:
if n == 1:
return 0
if n == 2:
return 1
Теперь, когда у нас есть условие остановки, остальное легко.Просто сделайте шаг, а остальные будут работать самостоятельно:
def fib_rec(n):
if n == 1:
return 0
if n == 2:
return 1
return fib_rec(n-1) + fib_rec(n-2)
Перейдите на эту ссылку , чтобы увидеть визуализацию того, что там происходит.
Если вы хотите использовать цикл, это просто до разработки логики с обменом значениями переменных.Что-то вроде:
def fib_loop(n):
prev = 0
cur = 1
for _ in range(2, n):
next = prev + cur
prev = cur
cur = next
return next
Опять, зайдите сюда , чтобы увидеть визуализацию кода.Поможет вам разобраться.