为什么值在递归中没有改变?
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它的价值并在
之外分配它
如果输入: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它的价值并在