Dynamically Typed

To type check the factorial function it is necessary to write additional conditionals.

def factorial(number):

	if not isinstance(number, int):
		print("Factorial is only designed for integers")
		return None

	elif number < 0:
		print("Factorial is only designed for positive numbers")
		return None

	elif number == 0:
		return 1

	else:
		recurse = factorial(number - 1)
		result = number * recurse
		return result

Without these, a decimal number or a negative integer would result in the terminating conditional never being reached and the recursive function to run indefinitely.