Как исправить RecursionError: maximum recursion depth exceeded in comparison
def f(n):
if n==1: return n
if n>1:return n*f(n-1)
print (f(2023)/f(2020))
питон выдает это:
Traceback (most recent call last):
File "C:\Users\Zver\Desktop\Егэ инф\162.py", line 4, in <module>
print (f(2023)/f(2020))
File "C:\Users\Zver\Desktop\Егэ инф\162.py", line 3, in f
if n>1:return n*f(n-1)
File "C:\Users\Zver\Desktop\Егэ инф\162.py", line 3, in f
if n>1:return n*f(n-1)
File "C:\Users\Zver\Desktop\Егэ инф\162.py", line 3, in f
if n>1:return n*f(n-1)
[Previous line repeated 1021 more times]
File "C:\Users\Zver\Desktop\Егэ инф\162.py", line 2, in f
if n==1: return n
RecursionError: maximum recursion depth exceeded in comparison
>>>
Ответы (2 шт):
Автор решения: MBo
→ Ссылка
Нужно изменить подход
Во-первых, для вычисления факториала рекурсия не нужна, достаточно простого цикла
Во-вторых, если факториал ещё понадобится, он есть в math
В третьих, задачу print (f(2023)/f(2020)) несравненно более эффективно решать, обдумав математику:
res = 1
for i in range(2021, 2024):
res *= i
print(res)
Автор решения: Artem Shira
→ Ссылка
import sys
sys.setrecursionlimit(100000)
def f(n):
if n==1: return n
if n>1:return n*f(n-1)
print (f(2023)/f(2020))
Вот так можно расширить глубину рекурсии