shenxian32 2024-08-05 15:18 采纳率: 89%
浏览 4

关于#java#的问题:这段代码递归的终止条件在哪里

这段代码递归的终止条件在哪里?没找到return啊!看不明白


class Solution {
    List<List<Integer>> ans = new LinkedList<>();
    LinkedList<Integer> track = new LinkedList<>();
    public List<List<Integer>> subsetsWithDup(int[] nums) {
        Arrays.sort(nums);
        process(nums,0);
        return ans;
    }
    /**
    * 回溯算法
    */
    public void process(int[]nums,int index){
        ans.add(new LinkedList<>(track));
        //选择列表,也就是决策列表
        for(int i = index;i < nums.length;i++){
        //剪枝操作,如果前面选择过了,就不选了 直接跳过
            if(i > index && nums[i] == nums[i - 1]){
                continue;
            }
            //选择
            track.addLast(nums[i]);
            process(nums,i + 1);
            //撤销选择
            track.removeLast();
        }
    }
}

  • 写回答

1条回答 默认 最新

  • Huazie 优质创作者: 编程框架技术领域 2024-08-05 15:55
    关注

    for 循环结束了, 函数调用返回 就结束了呀, 没有返回值,相当于 return;
    递归里一层一层返回

    评论

报告相同问题?

问题事件

  • 创建了问题 8月5日