input: Write a function to calculate the factorial of a given number \( n \). If \( n \) is 0, the function should return 1. Otherwise, it should return the product of \( n \) and the factorial of \( n-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
  
output: def factorial(n):
      if n == 0:
          return 1
      else:
          return n * factorial(n-1)