我正在查看一些 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/