gpt4 book ai didi

java - 在这些调用之间使用系统输出打印的双重递归调用 Ap 计算机科学

转载 作者:行者123 更新时间:2023-12-02 11:31:41 26 4
gpt4 key购买 nike

在我接触到这个方法之前,我以为我理解了递归。我对这件事的时间安排感到非常惊讶,因此请求你们的帮助。

public static void mystery5(String sWord)
{
int nL = sWord.length();
if(nL >= 3)
{
mystery5(sWord.substring(0, nL/3));
System.out.println(sWord.substring(nL/3, 2*nL/3));
mystery5(sWord.substring(2*nL/3));
}
}

public static void main(String[] args)
{
mystery5("la-la-la");
}

输出是:

-la 
l

最佳答案

首先,我们要注意,如果使用长度为 2 或更小的字符串调用递归函数,则它不会执行任何操作。

其次,让我们用一些变量的值替换它们,以更好地理解这一点:

字符串“la-la-la”的长度为 8。

8/3 == 2(整数算术)

2*8/3 == 16/3 == 5

因此,在第一次调用(“1”)中,我们得到了:

     mystery5(sWord.substring(0, 2));
System.out.println(sWord.substring(2, 5));
mystery5(sWord.substring(5));

这意味着:

     mystery5("la");            // let's name this "2A", it will not print anything
System.out.println("-la"); // prints "-la"
mystery5("-la"); // let's name this "2B", this will do something

您可以自己为第二次调用进行与我刚刚所做的相同的开发吗?

<小时/>

如果您一步一步进行,堆栈将如下所示,其中神秘5调用的名称如上面所写:

START
main
main - "1"
main - "1" - "2A"
main - "1" -----> print "-la"
main - "1" - "2B"
main - "1" - "2B" - "3A"
main - "1" - "2B" ----> print "l"
main - "1" - "2B" - "3B"
main - "1" - "2B"
main - "1"
main
END

关于java - 在这些调用之间使用系统输出打印的双重递归调用 Ap 计算机科学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49245775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com