gpt4 book ai didi

java - 递归 - 它做了什么

转载 作者:行者123 更新时间:2023-11-29 09:50:40 25 4
gpt4 key购买 nike

我已经无计可施了...我理解更简单的递归示例,但是当它变得棘手时我却毫 headless 绪。这是一个例子。如果有人能说出它的作用,我会很高兴。编译器做什么...

public static char mystery(String s, int n, int m)
{
if (n==1) return s.charAt(m);

char first = mystery(s, n/2, m*2);
char second = mystery(s, n/2, m*2 +1);

System.out.print(first + " " + second + " ");

return first;
}

调用方法时打印的内容:mystery("fredpass", 5, 1)

答案是p a s s p s

我不知道他们是怎么到那里的...

如果有人能帮助我解决这个问题,我将不胜感激。在互联网上的其他地方,他们只解释阶乘——简单的例子。不知道如果你像 char first = mystery ( blah ); 那样调用它两次,然后再 char second = mystery ( blah );

会发生什么

最佳答案

只需手动跟踪调用:

mystery(5, 1)
first = mystery(2, 2)
first = mystery(1, 4) = 'p'
second = mystery(1, 5) = 'a'
second = mystery(2, 3)
...

等等。给自己足够的纸来画出调用堆栈、函数调用状态和局部变量的完整图片。例如,在我的图片中最里面的调用打印“p a”之后,它返回 'p',所以我会在 mystery(2, 2) 之后写那个字母。

关于java - 递归 - 它做了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5311998/

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