https://jakerpomperada.com/factorial-a-number-using-recursion-in-java/