递归如何工作?

时间:2014-02-21 09:08:19

标签: java

任何人都可以解释这个递归程序是如何工作的。我试过并运行这个程序我得到了输出:但我不是理解程序的流程。

mycode的

public class NewClass {
    public static void main(String args[]) {
        System.out.println("i am caller" + new NewClass().mystery("DELIVER"));
    }
    public String mystery(String s) {
        System.out.println("sssss" + s);
        String s1 = s.substring(0, 1);      
        String s2 = s.substring(1, s.length() - 1);   
        String s3 = s.substring(s.length() - 1);      
        if (s.length() <= 3) {          
            return s3 + s2 + s1;
        } else {           
            return s1 + mystery(s2) + s3;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

以下是单步:

mystery("DELIVER")
print "sssssDELIVER"
s1 = D
s2 = ELIVE
S3 = R
DELIVER.length <= 3 ?  -> no

     mystery("ELIVE")
     print "sssssELIVE"
     s1 = E
     s2 = LIV
     s3 = E
     ELIVE.length <= 3 ? -> no

         mystery("LIV")
         print "sssssLIV"
         s1 = L
         s2 = I
         s3 = V
         LIV.length <= 3 ? -> yes
         return VIL

     return E + VIL + E

return D + EVILE + R
print "i am callerDEVILER"

希望你现在明白了!

答案 1 :(得分:0)

s1将采用first chars3将采用the last char,而s2将采用第一个字符和最后一个字符之间的所有内容。那你要检查字符串length is less or equal 3是否, 如果是,它将return s1,s2,s3作为一个字符串 它将return D +之谜(s2)=“ELIVE”+ R.然后是D +E + mystery(s2)="LIV" +E +R,因为它是三个字符,它将返回D +E + L + I + V +E + R