java - 用Java编写递归函数以输出所有组合的一组单词
问题描述
我想看看如何使用 Java 递归函数获得以下输出。了解如何解决这样的问题会很棒。递归 Java 函数应该使用这些词:"MIKE", "AND", "IKE"
并在单独的行上输出每个排序,例如这样。
MIKEANDIKE
MIKEIKEAND
IKEANDMIKE
IKEMIKEAND
ANDIKEMIKE
ANDMIKEIKE
public static void main(String[] args) {
recur(new String[]{"MIKE", "AND", "IKE"}, "", 0);
}
public static void recur(String[] words, String result, int n) {
if (n == words.length) {
System.out.println(result);
return;
}
for (int i = 0; i < words.length; ++i) {
String out = result + words[i];
recur(words, out, n + 1);
}
}
解决方案
您需要以某种方式标记您已经使用的值,在此示例中,我为此使用 null,但还有其他方法(例如使用列表并删除/添加值,或复制列表他们自己)。
public static void recur(String[] words, String result, int n) {
if (n == words.length) {
System.out.println(result);
return;
}
String temp;
for (int i = 0; i < words.length; ++i) {
if (null != words[i]) {
String out = result + words[i];
temp = words[i];
words[i] = null;
recur(words, out, n + 1);
words[i] = temp;
}
}
}
推荐阅读
- r - 如何用前一行的值填充行但有限制?
- redirect - http 不会在 Google Chrome 上转发到 https
- javascript - 使用 node.js 单击时使用 javascript 插入数据库
- python - 使用 PRAW,“print submit.add_comment(response)”收到语法错误
- python - 使用 Python PyInquirer 和 asyncio 创建用户界面以触发异步操作
- python - 将 Flask 应用程序上传到 AWS 上的 Elastic Beanstalk 时,为什么会出现此错误?
- css - 随机平铺背景
- python - python3 ctypes的无效句柄错误 - 昨天工作
- c++ - std::unordered_multiset 的不同元素的数量
- python - 从下拉列表中选择一个值