First implementation, recursion
First implementation, recursion