任何人都可以解释这个递归程序是如何工作的。我试过并运行这个程序我得到了输出:但我不是理解程序的流程。
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;
}
}
}
答案 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 char
,s3
将采用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