当我使用递归方法反转字符串时,它给了我stackOverflow错误。

public class ReverseString {

    public static void main(String[] args) {
        String str = "Juhi";
        System.out.println(recursiveString(str));
    }

    static String recursiveString(String str) {
        return !str.equals("") ? recursiveString(str.substring(1) + str.charAt(0)) : str;

    }
}

最佳答案

这应该可以解决问题:

static String recursiveString(String str) {
    return !str.equals("") ? recursiveString(str.substring(1)) + str.charAt(0) : str;
}


在您的代码中,您并没有减少string参数的长度,它始终是相同的输入,因此基本上它正在进入无限循环。如果我们在递归调用之后移动串联部分,则每个递归调用的字符串都会更短,直到它为空,这表明递归结束。

10-04 13:14