以下方法的 return 语句难倒了我:
public static boolean groupSum(int start, int[] nums, int target, int max) {
if (start >= nums.length) { return target == 0; }
// can't use max value
else if (nums[start] == max) {
return groupSum(start + 1, nums, target, max);
}
else {
return groupSum(start + 1, nums, target - nums[start], max) ||
groupSum(start + 1, nums, target, max);
}
}
如果你注意到的话,return 语句有一个 ||其中的“或”子句,我对这里返回哪个子句感到困惑......如果您能提供其工作原理的解释,那就太好了。
最佳答案
由于 ||
是所谓的短电路运算符,因此会计算第一个表达式,并且当且仅当它的计算结果为 true 时,才会立即返回 true,而不计算第二个表达式。如果失败,则评估第二个并返回结果。
如果你有
a() || b()
并且 a 计算结果为 true b() 未计算
关于java - 带 || 的递归返回语句在里面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537621/