Java Рекурсивная функция: добавлять только элементы с указанным атрибутом c - PullRequest
0 голосов
/ 18 марта 2020

Я работаю над проектом для моей диссертации. На самом деле я не слишком много занимался кодированием и был бы признателен за помощь в решении следующей проблемы, которую я пытаюсь решить:

Изначально я создал список продуктов. Каждый продукт p имеет некоторые атрибуты, один из которых логический, называемый isCool. Я хочу получить все варианты этого списка с продуктами. Поэтому я создал рекурсивную функцию, которая возвращает все перестановки p. Так что, если у меня есть 3 продукта, я получу 3! = 6 списков, потому что есть 6 возможных перестановок.

Теперь я хочу, чтобы рекурсивная функция принимала только те продукты, у которых атрибут isCool == false. Как я могу это сделать? Код прилагается. Кто-нибудь может помочь?

public class PermutateArray {

    public List<List<Product>> permute (Product[] p) {
        List<List<Product>> list = new ArrayList<>();
        permuteHelper(list, new ArrayList<>(), p);
        return list;
    }

    private void permuteHelper(List<List<Product>> list, List<Product> resultList, Product[] p) {

        // Base case
        if (resultList.size() == p.length) {
            // list.add(new ArrayList<>(resultList));

            //Startknoten ans Ende anfügen
            List<Product> target = new ArrayList<>(resultList);
            target.add(resultList.get(0));
            list.add(target);   

        } else {
            for (int i = 0; i < p.length; i++) {

                if (resultList.contains(p[i])) {
                    continue;
                }
                    resultList.add(p[i]);   
                    permuteHelper(list, resultList, p);         
                    resultList.remove(resultList.size() - 1);

                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...