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”段中的第一行会发生什么。如果有人可以帮助,请这样做。
最佳答案
条件if (nL>=3)
表示仅在输入String
的长度至少为3时执行递归调用。
递归方法使用输入字符串sWord.substring(0,nL/3)
的前三分之一调用自身。
然后打印字符串的前三分之一。
最后,它使用输入String的前三分之一再次调用自身。
对于长度为12的输入“ abcdefgjijkl”,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