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