Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
349 views
in Technique[技术] by (71.8m points)

Java recursion simple string

The below code works just fine, it reverses a string.But, I do not understand how it works. I think it should return an empty string since each time we are calling reversedString(sub); it takes out the character at index 0, so we should end up with an empty string at the end.

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();
    }

}

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I've heard you like visualizations:

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";
                        ----------------/
                                  |
                                 /-
                                  "" 


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...