我正在研究一个Java程序,其中包含整数的文本文件被读入简化的LinkedList,然后考虑列表的所有可能子集。在我的代码底部,在return语句的中间有一个OR运算符,用||表示。编译器如何决定是否表达||的左侧或右侧运营商?我调试了程序并逐行逐步执行,我注意到双方都是递归表达的。如何表达或声明的两个部分?我是新手,所以我觉得很困惑。任何帮助将不胜感激。
Grid
答案 0 :(得分:1)
如果subsetSumXOR(node.next, sumOne + node.item, sumTwo, target)
为真,则返回true
。
否则,将评估||
右侧的表达式并返回其值。
答案 1 :(得分:1)
首先评估左侧,如果为真,则右侧未评估 。这是调用快捷方式(语句(true||expensiveFunction())
永远不能评估为false,所以为什么要烦扰expensiveFunction()
?)。您可以通过输入看到这一点,不需要任何递归。
您可能看到的是左侧评估为 false ,在这种情况下是,它将评估右侧。