java - 使用递归反转字符串

标签 java recursion

有人可以解释一下为什么“return str”行永远不会执行吗?

public static String reverseString(String str){
    String reverse="";
    if(str.length() == 1){
        return str; //at one point this condition will be true, but value never returns
    } else {
        reverse += str.charAt(str.length()-1) + reverseString(str.substring(0,str.length()-1));
        return reverse;
    }
}

public static void main(String a[]) {
    System.out.println(reverseString("Test"));
}

最佳答案

该行确实执行了,怎么能说它不执行呢。我添加了syso语句,它确实打印了,实际上你是在递归中调用substring,一旦长度变为1,就会执行。

public static String reverseString(String str) {
        String reverse = "";
        if (str.length() == 1) {
            System.out.println("hi");
            return str; // at one point this condition will be true, but value never returns
        } else {
            reverse += str.charAt(str.length() - 1) + reverseString(str.substring(0, str.length() - 1));
            return reverse;
        }
    }

    public static void main(String a[]) {
        System.out.println(reverseString("Test"));
    }

输出

hi
tseT

关于java - 使用递归反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30773557/

相关文章:

java - JTextArea打印

java - 这个 'if' 在 Java 中使用三个同时表达式进行评估

java - 为什么我的数组程序显示为空?

Java文件权限问题

java - 简单的 Java 幂递归

c - 当我尝试使用二分搜索递归地计算数组中某个数字的出现次数时,为什么此代码会返回段错误?

java - Eclipse for Java (EE) Developers 和 Eclipse Classic 有什么区别?

java - 在不知道父节点的情况下删除节点 (JavaFX)

javascript - EXT JS6 递归调用 Store

java - 二叉搜索树递归添加