https://teezaar.com/programmer-recursion-definition-gift-for-c