, , :
- , , (n == 1) , .
- - (n > 1) - ! , - .
. , , , , .
def gen_factorial(n):
if n == 1:
yield 1
else:
for u in gen_factorial(n - 1):
yield u
yield u * n
for u in gen_factorial(5):
print(u)
print(list(gen_factorial(8)))
1
2
6
24
120
[1, 2, 6, 24, 120, 720, 5040, 40320]