【发布时间】:2020-04-07 06:09:13
【问题描述】:
我正在查看编写为here 的置换程序。代码如下所示:
public static void main(String[] args) {
permutation("", "CAT");
}
private static void permutation(String prefix, String str) {
int n = str.length();
if (n == 0) {
System.out.println(prefix);
} else {
for (int i = 0; i < n; i++) {
permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i + 1));
}
}
}
对于单词 CAT,我得到以下输出:
猫
号召性用语
行动
空中交通管制
三氯乙烷
交警
我可以追溯递归的步骤并了解它是如何获得 CAT 和 CTA 的,但我看不出它是如何继续进行的。在 n == 0(这是基本情况)之后,一切都应该停止(这将在我们获得 CTA 之后发生)。
其他来源:
我阅读了here 的解释,但我仍然无法理解它是如何继续进行的。我觉得我得到了递归的概念。我可以盲目地使用它,但我想了解它是如何在这里工作的。
还有另一种排列递归的版本here,但那是使用回溯,我理解的更好一些。这是我不明白的尾递归。
问题:
有人可以解释一下递归是如何工作的,以便我们在上面的示例中通过 CTA 吗?这不是家庭作业。我只是在研究不同的计划并通过一些技能培养者来工作。
谢谢!
【问题讨论】: