Entendendo a recursão em Python

Eu estou realmente tentando envolver meu cérebro em torno de como funciona a recursão e entender algoritmos recursivos. Por exemplo, o código abaixo retorna 120 quando eu entro em 5, desculpe minha ignorância, e só não estou vendo o porquê?

def fact(n):
    if n == 0:
        return 1
    else:
        return n * fact(n-1)

answer = int (raw_input('Enter some number: '))

print fact(answer)

questionAnswers(4)

yourAnswerToTheQuestion