Here is some Java code to reverse a string recursively.
Could someone provide an explanation of how it works?
public static String reverse(String str) {
if ((null == str) || (str.length() <= 1)) {
return str;
}
return reverse(str.substring(1)) + str.charAt(0);
}
I’m not understanding how this can possibly work.
The function takes the first character of a String –
str.charAt(0)– puts it at the end and then calls itself –reverse()– on the remainder –str.substring(1), adding these two things together to get its result –reverse(str.substring(1)) + str.charAt(0)When the passed in String is one character or less and so there will be no remainder left – when
str.length() <= 1)– it stops calling itself recursively and just returns the String passed in.So it runs as follows: