https://cpython.pythonprogramminghelp.com/3-savvy-ways-to-full-factorial/