Попробуйте заменить:
def fact(n):
return 1 if(n == 1) else n * fact(n - 1)
на:
def fact(n):
return 1 if(n <= 1) else n * fact(n - 1)
. Если вы пройдете 2 одинаковых номера, вы попытаетесь вычислить fact(0)
(что вызовет fact(-1)
и fact(-2)
и т. д. до максимальной ошибки глубины рекурсии).