Доброго времени суток. Уважаемые знатоки, решил я эту задачку через рекурсию, НО чувствует моя душа, что можно сделать лучше... Подскажите пожалуйста - как оптимизировать мой код, и желательно с пояснениями. Зараннее всем спасибо!
public class Solution {

    public static void test(String text, String[] args) {

        if (args.length == 0) {
            System.out.println(text);
            return;
        }

        for (int i = 0; i < args.length; i++) {
            String text2 = text + args[i];

            String[] args2 = new String[args.length - 1];
            int counter = 0;
            for (int i2 = 0; i2 < args.length; i2++) {
                if (i2 == i) continue;

                args2[counter] = args[i2];
                counter++;
            }
            test(text2, args2);
        }
    }

    public static void main(String[] args) {

        String[] array = {"Мама", "Мыла", "Раму"};

        String text2 = "";
        test(text2, array);

    }
}