Как исправить цикл чтобы избежать RecursionError?
Есть цикл:
def F(n):
if n == 1:
return F(1)
else:
if n > 1:
return F(n-1) + 2**(n-1)
print(F(10))
При вызове функции получаю ошибку:
RecursionError: maximum recursion depth exceeded in comparison
Как можно изменить цикл, чтобы получить значение и избежать этой ошибки?
Ответы (2 шт):
Eсли n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то выполнить функцию F c аргументом n=1, в которой если n равно 1, то...
Нужно return F(1) заменить на return 1.
Ошибка возникает из-за бесконечной рекурсии в F(1), так как вместо возврата числа происходит повторный вызов F(1).
def F(n):
if n == 1:
return 1
else:
return F(n - 1) + 2 ** (n - 1)
print(F(10))