Java递归简单字符串

下面的代码工作得很好,它反转了一个字符串。但是,我不明白它是如何工作的。我认为它应该返回一个空字符串,因为每次我们调用reversedString(sub); 它时都会取出索引 0 处的字符,所以我们应该以一个空字符串结尾。

import components.simplewriter.SimpleWriter;
import components.simplewriter.SimpleWriter1L;


public final class HelloWorld {




    private static String reversedString(String s) {
        if (s.length() == 0) {
            return s;
        } else {
            String sub = s.substring(1);
            String revSub = reversedString(sub);
            String result = revSub + s.charAt(0);
            return result;
        }
    }


    public static void main(String[] args) {
        SimpleWriter out = new SimpleWriter1L();
        out.println(reversedString("Banana"));

        out.close();
    }

}

回答

我听说你喜欢可视化:

reversedString("Banana");
----------------------/
          |
    /---------------------------
    reversedString("anana") + "B";
    ---------------------/
              |        
        /--------------------------
        reversedString("nana") + "a" + "B";
        --------------------/
                  |
            /-------------------------
            reversedString("ana") + "n" + "a" + "B";
            -------------------/
                      |
                /------------------------
                reversedString("na") + "a" + "n" + "a" + "B";
                ------------------/
                          |
                    /-----------------------
                    reversedString("a") + "n" + "a" + "n" + "a" + "B";
                    -----------------/
                              |
                        /----------------------
                        reversedString("") + "a" + "n" + "a" + "n" + "a" + "B";
                        ----------------/
                                  |
                                 /-
                                  "" 


以上是Java递归简单字符串的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>