input: Write a function that calculates the factorial of a given number using recursion. The function should take one integer argument, 'n', and return the factorial of 'n' as an integer. The function should return 1 if 'n' is 0.
  
  Example:
  assert factorial(5) == 120
  assert factorial(0) == 1
  assert factorial(3) == 6
output: def factorial(n):
      if n == 0:
          return 1
      else:
          return n * factorial(n - 1)