Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
递归函数以获取Java中所有可能的组合_Java_Loops_Recursion - Fatal编程技术网

递归函数以获取Java中所有可能的组合

递归函数以获取Java中所有可能的组合,java,loops,recursion,Java,Loops,Recursion,我试图找到所有可能的组合,专家的技能在一个特定的项目与递归函数。但是我得到了错误的答案 我有每个项目的专家名单。我可以通过以下方式访问每项技能的专家列表: ExpertForSkill currentExpertList = currentProjectTeam.expertForSkill.get(skillNum); 我的递归函数是 public static List<ProjectAndTeam> recursiveExpertFinder( int

我试图找到所有可能的组合,专家的技能在一个特定的项目与递归函数。但是我得到了错误的答案

我有每个项目的专家名单。我可以通过以下方式访问每项技能的专家列表:

ExpertForSkill currentExpertList = currentProjectTeam.expertForSkill.get(skillNum);
我的递归函数是

    public static List<ProjectAndTeam> recursiveExpertFinder(
        int skillNum,
        ProjectAndTeam currentProjectTeam,
        List<ProjectAndTeam> projectAndTeams) {

    if (skillNum == currentProjectTeam.project.skills.size()) {
        return projectAndTeams;
    } else {
        ExpertForSkill currentExpertList = currentProjectTeam.expertForSkill.get(skillNum);
        ExpertForSkill newExprtForSkill = new ExpertForSkill();
        ProjectAndTeam newProjectAndTeam = new ProjectAndTeam();
        newProjectAndTeam.project = currentProjectTeam.project;
        for (Expert expert : currentExpertList.expertList) {

            newExprtForSkill.skill = currentExpertList.skill;
            newExprtForSkill.expertList.add(expert);
            List<ExpertForSkill> newExpertList = new ArrayList<>();
            newExpertList.add(newExprtForSkill);
            newProjectAndTeam.expertForSkill = newExpertList;
            projectAndTeams.add(newProjectAndTeam);
           recursiveExpertFinder(skillNum + 1, currentProjectTeam, projectAndTeams);
        }
        return projectAndTeams;


    }


}
我希望输出像这样

Skill 1:A
Skill 2:B

Skill 1:B
Skill 2:B
但是我得到的输出和输入是一样的

Skill 1 : <A,B>
Skill 2 : <B>
技能1:
技能2:

您得到的正确答案是什么,错误答案是什么?我已经用预期输出和当前输出编辑了我的问题。这不是递归函数的作用,它的终止条件是
skillNum==currentProjectTeam.project.skills.size()
。所以,如果技能大小为2,则结果输出将包含2项,以此类推。
Skill 1:A
Skill 2:B

Skill 1:B
Skill 2:B
Skill 1 : <A,B>
Skill 2 : <B>