In [1]:
def fact(n):
    if n == 0:
        return 1
    else:
        return n * fact(n - 1)
In [2]:
fact(3)
Out[2]:
6
In [3]:
fact(10)
Out[3]:
3628800
In [4]:
f = 1
f
Out[4]:
1
In [5]:
f = f * 2
f
Out[5]:
2
In [6]:
f = f * 3
f
Out[6]:
6
In [7]:
f = f * 4
f
Out[7]:
24
In [8]:
f1 = 1
f2 = f1 * 2
f3 = f2 * 3
f4 = f3 * 4
(f1, f2, f3, f4)
Out[8]:
(1, 2, 6, 24)
In [9]:
f1, f2, f3, f4
Out[9]:
(1, 2, 6, 24)
In [10]:
n, i, f = 10, 1, 1
while i <= n:
    i, f = i + 1, f * i
f
Out[10]:
3628800
In [11]:
def fact_iter(n, i, f):
    if i <= n:
        return fact_iter(n, i + 1, f * i)
    else:
        return f
fact_iter(10, 1, 1)
Out[11]:
3628800
In [12]:
import math
math.factorial(10)
Out[12]:
3628800