Java 理解递归字符串有困难
我在递归方面有困难。我必须找到mystery7(“abcdefgjijkl”)的输入,但我不明白当“if”段中的第一行出现时会发生什么。如果有人能帮忙,请帮忙 if(nL>=3)条件Java 理解递归字符串有困难,java,recursion,Java,Recursion,我在递归方面有困难。我必须找到mystery7(“abcdefgjijkl”)的输入,但我不明白当“if”段中的第一行出现时会发生什么。如果有人能帮忙,请帮忙 if(nL>=3)条件意味着只要输入字符串的长度至少为3,就会执行递归调用 递归方法使用输入字符串的前三分之一调用自身swarm.substring(0,nL/3) 然后打印字符串的前三分之一 最后,它使用输入字符串的前三分之一再次调用自己 对于长度为12的输入“abcdefgjijkl”,mystery7(“abcdefgjijkl
意味着只要输入字符串
的长度至少为3,就会执行递归调用
- 递归方法使用输入字符串的前三分之一调用自身
swarm.substring(0,nL/3)
- 然后打印字符串的前三分之一
- 最后,它使用输入字符串的前三分之一再次调用自己
对于长度为12的输入“abcdefgjijkl”,mystery7(“abcdefgjijkl”)将导致以下调用:
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")
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
第一个递归函数将在满足条件的情况下递归执行,一旦递归结束并回溯System.out.println(xxx)
将开始播放,递归将再次开始使用该字符串。在Java中确实不需要使用匈牙利符号……您能详细说明什么是神秘字符串吗?
a
abcd
a