public void mystery7(String sWord){
int nL=sWord.length();
if (nL>=3) {
mystery7(sWord.substring(0,nL/3));
System.out.println(sWord.substring(0,nL/3));
mystery7(sWord.substring(0,nL/3));
}
}
我遇到递归问题。我必须找到mystery7(“abcdefgjijkl”)的输入,但我不明白当“if”段中的第一行会发生什么。如果有人可以提供帮助,请做。
答案 0 :(得分:1)
条件if (nL>=3)
表示只要输入String
的长度至少为3,就会执行递归调用。
sWord.substring(0,nL/3)
的前三分之一调用自身。对于输入" abcdefgjijkl",其长度为12,mystery7(" abcdefgjijkl")会导致以下调用:
mystery7("abcdefgjijkl")
mystery7("abcd");
mystery7("a"); // does nothing
System.out.println("a");
mystery7("a"); // does nothing
System.out.println("abcd");
mystery7("abcd");
mystery7("a"); // does nothing
System.out.println("a");
mystery7("a"); // does nothing
因此输出
a
abcd
a
答案 1 :(得分:0)
第一个递归函数将在条件满足时递归执行,一旦递归结束,并且回溯System.out.println(xxx)
将会发挥作用,递归将再次启动该字符串。