为什么值在递归中没有改变?

Why the value not changed in recursion?

如果输入:int[] nums= [1,2,3], target=4; 为什么输出 res=0; res还没有积累?

    public int combinationSum4(int[] nums, int target) {
        int res=0;
        helper(nums,target,res);
        return res;
    }

    private void helper(int[] nums, int target, int res){
        if (target==0) {
            res++;
            return;
        }
        else if (target<0) return;
        else {
            for(int i=0;i<nums.length;i++){
                helper(nums, target-nums[i],res);
            }
        }

    }

Java基元不是通过引用传递,而是通过值传递。
这意味着如果您将一个 int 传递给一个方法并在该方法内部递增它,则该值只会在该方法的范围内增加,而不是在外部。

所以res++只改变辅助方法中的资源。如果你想让它在它之外做任何事情,你需要return它的价值并在

之外分配它