input: Write a function that calculates the factorial of a given number using recursion. The function should return the factorial value for any non-negative integer input. If the input number is 0, the function should return 1.
  
  def factorial(n):
   if n == 0:
    return 1
   else:
    return n * factorial(n-1)
  
  assert factorial(0) == 1
  assert factorial(1) == 1
  assert factorial(5) == 120
  assert factorial(10) == 3628800
  assert factorial(20) == 2432902008176640000
output: def factorial(n):
   if n == 0:
    return 1
   else:
    return n * factorial(n-1)