我正在查看一些 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 中查看它是否有效,结果确实如此。然后我替换了 || with && 和 Eclipse 似乎并没有被它困扰。从逻辑上讲,我理解这个递归代码应该沿着 TreeNode t1 的左右子树继续向下,但我正在寻找这个 Java 语法如何工作背后的更多理论解释。
谁能解释一下 || 背后的含义Java 的 return 语句中的 && ?从递归的角度来看,这意味着什么?只有与递归结合使用才有意义吗?
正如方法签名中所定义的,您必须返回一个boolean
。因此,之后return
关键字,您必须提供一个boolean
或一个表达式其评估为boolean
.
在你的情况下你有这样的表达(subTree(t1.left, t2) || subTree(t1.right, t2));
其中两个操作数将被评估为boolean
你将应用一个逻辑OR
仅当第一个评估结果为false
。如果第一个操作数的计算结果为true
第二个将不会被评估并且true
将退休。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)