Простой рекурсивный факторный метод отлично работает:
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))
Почему это?
