以递归方式反转Java中的字符串

时间:2016-10-17 06:06:41

标签: java recursion

我已经引用Whats the best way to recursively reverse a string in Java?作为解决方案,但我的解决方案与我不理解的正确解决方案之间存在细微差别。

我试图通过命令行反转args中的字符串。这是我反转String的递归方法(几乎完全相同)。但是,我遇到了StackOverflowException。我想知道为什么会这样?是因为我的方法是静态的,而他们的方法不是吗?

public static String reverse(String word) {
    if (word.length() == 1) {
        return word;
    } else {
        return reverse(word.substring(1) + word.charAt(0));
    }
}

2 个答案:

答案 0 :(得分:3)

每次调用reverse时,字符串的长度都不会改变。如果您将return语句更改为:

return reverse(word.substring(1))  + word.charAt(0);

每次调用reverse时,单词的长度都会缩短一个字符。

答案 1 :(得分:0)

public String reverseString(String str) {

        if (str.length() == 1) {
            return str;
        } else {
            reverse += str.charAt(str.length() - 1)
                    + reverseString(str.substring(0, str.length() - 1));
            return reverse;
        }
    }