Java && ||在 RETURN 语句中?

标签 java algorithm recursion syntax return

我正在查看一些 Java 算法示例,我在递归方法中遇到了这段代码:

boolean subTree(TreeNode t1, TreeNode t2) {
    if (t1 == null) {
        return false;
    }
    if (t1.value == t2.value) {
        if (treeMatch(t1, t2))
            return true;;
    }
    return (subTree(t1.left, t2) || subTree(t1.right, t2));
}

不知道(也从未见过)||之前在 return 语句中使用过,更不用说递归语句了,真的让我很困惑。我将代码复制到 Eclipse 中以查看它是否有效。然后我更换了 ||与 && 和 Eclipse 似乎并没有被它打扰。从逻辑上讲,我理解此递归代码应该继续向下延伸到 TreeNode t1 的左右子树,但我正在寻找有关此 Java 语法工作原理的更理论性的解释。

谁能解释一下||背后的意思和 && 在 Java 的 return 语句中?就递归而言,这意味着什么?是不是只有和递归结合使用才有意义?

最佳答案

如方法签名中所定义,您必须返回一个 boolean 值。因此,在 return 关键字之后,您必须提供一个 boolean 或一个表达式,其计算结果为 boolean .

在您的情况下,您有表达式 (subTree(t1.left, t2) || subTree(t1.right, t2));,其中两个操作数将计算为 boolean 值,只有当第一个计算结果为 false 时,您才会对它们应用逻辑 OR。如果第一个操作数的计算结果为 true,则不会计算第二个操作数,并且返回 true

关于Java && ||在 RETURN 语句中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21556993/

相关文章:

java - 奇数货币值(value)的正则表达式

java - 将 Java 8 的 Optional 与 Stream::flatMap 一起使用

java - JRXML 加载异常

algorithm - 在放气算法中确定 block 大小的一些好的策略是什么?

algorithm - 最小化图中的最大距离

java - 重载公共(public)方法

algorithm - 是否有用于绘制力导向图的简单(-ish)算法?

python - 在 Python 中确定嵌套元组的嵌套级别的简单方法

sql - TSQL 函数递归

php - 使用 PHP 递归列出所有带日期的文件