https://mytecharm.com.co/post/recursion-in-python-factorial-with-debugging-explained-8eugd7