如果输入: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++
仅在helper方法内更改res。如果您想让它在它外面做任何事情,则需要返回它的值并在外面分配它