Working

Solution works correctly, however I believe there may be some serious
space issues in the recursive methods. Not sure if this will work on
large inputs.
Fixed off by one error

For certain inputs the results would return 1 fewer guard than
necessary. Also refactored project into its own package