Простой рекурсивный факторный метод отлично работает:
def fact(n):
if n == 0:
return 1
return n * fact(n-1)
Но мне хотелось немного поэкспериментировать и вместо этого использовать dict
. Логически это должно сработать, но куча операторов печати говорит мне, что n
вместо остановки в 0
скользит вниз по отрицательным числам до достижения максимальной глубины рекурсии:
def recursive_fact(n):
lookup = {0: 1}
return lookup.get(n, n*recursive_fact(n-1))
Почему это?