首页 > 解决方案 > 用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);
    }
}

标签: javarecursion

解决方案


您需要以某种方式标记您已经使用的值,在此示例中,我为此使用 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;
            }
        }
    }

推荐阅读