Раз на примере факториала - да будет так. На языке Python
def factorial(n, acc=1):
"calculate a factorial"
if n == 0:
return acc
return factorial(n-1, n*acc)
print factorial(10)
Разъяснение происходящего:
изначально n = 10 acc = 1
acc = 10 * 1
acc = 10
В следующем вызове прописано n - 1
10 - 1 = 9
n = 9
acc = 9 * 10
acc = 90
Следующий вызов. Опять n - 1
n было 9, значит теперь n = 8
acc = 8 * 90
acc = 720
... и далее выполняем n - 1 пока n не станет равен 0