private String reverseRecursiveInner(String input, int i, StringBuilder stringBuilder) {
    if (i < 0) {
      return stringBuilder.toString();
    } else {
      stringBuilder.append(input.charAt(i--));
      return reverseRecursiveInner(input, i, 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