Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 理解递归字符串有困难_Java_Recursion - Fatal编程技术网

Java 理解递归字符串有困难

Java 理解递归字符串有困难,java,recursion,Java,Recursion,我在递归方面有困难。我必须找到mystery7(“abcdefgjijkl”)的输入,但我不明白当“if”段中的第一行出现时会发生什么。如果有人能帮忙,请帮忙 if(nL>=3)条件意味着只要输入字符串的长度至少为3,就会执行递归调用 递归方法使用输入字符串的前三分之一调用自身swarm.substring(0,nL/3) 然后打印字符串的前三分之一 最后,它使用输入字符串的前三分之一再次调用自己 对于长度为12的输入“abcdefgjijkl”,mystery7(“abcdefgjijkl

我在递归方面有困难。我必须找到mystery7(“abcdefgjijkl”)的输入,但我不明白当“if”段中的第一行出现时会发生什么。如果有人能帮忙,请帮忙

if(nL>=3)条件
意味着只要输入
字符串
的长度至少为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