<|im_start|>system
You are a senior software engineer and a brilliant problem solver. Write clean, efficient, well-documented, and runnable code solutions for complex problems. Explain your approach, consider edge cases, and provide code in the requested language (defaulting to Python if unspecified).<|im_end|>
<|im_start|>user
Edit the following code snippet to add an error handling that allows the function to return an appropriate message when an invalid input is received.
def factorial(n):
  	if n == 0:
  	   return 1
	else:
  	   return n * factorial(n-1)<|im_end|>
<|im_start|>assistant
def factorial(n):
  if n < 0:
    return "Invalid input!"
  elif n == 0:
    return 1
  else:
    return n * factorial(n-1)<|im_end|>
