java - 带 || 的递归返回语句在里面

标签 java android

以下方法的 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/

相关文章:

java - 如何查找所有子节点的文本

java - de.laures.cewolf - IIOException : Can't create output stream

java - 在同步块(synchronized block)中写入 volatile 数组的必要性

java - 我在运行前初始化 TextView,因为 View 尚未设置

android - 消息通知APP数据库结构设计

java - Jetty home 系统属性未设置

android - 在 Recyclerview 中点击一个项目会影响每七个项目吗?

android - 无法使用 Robotium 单击全屏

android - 由于资源文件,Android Studio中的Android单元测试成功,但在Gradle中未成功

android - 如何在绘画对象中设置自定义字体?