gpt4 book ai didi

java - 有人可以解释一下使用尾递归的反向字符串算法吗?

转载 作者:行者123 更新时间:2023-11-29 04:14:30 24 4
gpt4 key购买 nike

我很抱歉问这个问题是愚蠢的。在获取给定字符串的最后一个字符并返回之前,我能够理解代码,然后我无法关联递归逻辑。

在此处发布之前,调试器部分地帮助了我。不幸的是,不是 100%

你能帮我理解一下吗?

public static void main(String[] args) {
System.out.println(reverseRecursively("abcd"));
}

public static String reverseRecursively(String str) {
if (str.length() < 2) {
return str;
}
return reverseRecursively(str.substring(1)) + str.charAt(0);
}

调试器输出:

0=abcd
1=bcd
2=cd
3=d
Final: dcba

最佳答案

嗯,这是一个非常简单的逻辑:

return reverseRecursively(str.substring(1)) + str.charAt(0);

如果您在返回之前放置一个 System.out.println(),您将获得以下输出:

Recursing with substring: bcd and adding a
Recursing with substring: cd and adding b
Recursing with substring: d and adding c
Adding d as final char

如果你反转它,你会得到 dcba

为什么会反转呢?

好吧,你必须想到调用跟踪:

return reverseRecursively("bcd") + a -> retruns "dcba"
-> return reverseRecursively("cd") + b -> returns "dcb"
-> return reverseRecursively("d") + c -> returns "dc"
-> return d -> returns "d"

我想关键是要理解递归总是与另一个递归的结果相结合。

关于java - 有人可以解释一下使用尾递归的反向字符串算法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53229468/

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