public String reverseRecursive(String input) {
    validateInput(input);
    return reverseRecursiveInner(input, input.length() - 1, new StringBuilder());
  }
Tail recursive solution to this problem. This algorithm has the same complexity order in time
and space terms than the previous approach.
src/main/java/com/github/pedrovgs/problem51/ReverseString.java