我写了以下代码:
` private def maxYinRange(minX: Double,
maxX: Double,
minY: Double,
node: PointerPSTNode): Double = {
if (node == null || node.getY < minY) java.lang.Double.NEGATIVE_INFINITY
val nodeX: Double = node.getX
if (nodeX >= minX && nodeX <= maxX) node.getY
val leftChild: PointerPSTNode = node.getLeftChild
if (leftChild != null) {
val nodeR: Double = maxX(leftChild)/*here is the error*/
// nodeR >= points in left tree >= minX
if (nodeR >= minX && nodeR < maxX) {
val maxLeft: Double = maxYinRange(minX, maxX, minY, leftChild)
val maxRight: Double =
maxYinRange(minX, maxX, minY, node.getRightChild)
(if (maxLeft < maxRight) maxLeft else maxRight)
} else if (nodeR >= minX) {
maxYinRange(minX, maxX, minY, node.getLeftChild)
} else if (nodeR < maxX) {
maxYinRange(minX, maxX, minY, node.getRightChild)
}
}
java.lang.Double.NEGATIVE_INFINITY
}`
但是出现以下错误:Double不接受参数(错误在此行val nodeR: Double = maxX(leftChild)
)
而且我不知道该怎么解决。
答案 0 :(得分:0)
从逻辑的角度看,这似乎是您的意思
val nodeR: Double = leftChild.getX
但是,即使此问题已解决,该函数也始终会返回NEGATIVE_INFINITY
,因为那是方法中的最后一个值。其余代码已执行,但不会影响结果(编译器可能会警告您)
即使已修复该问题,该逻辑似乎也不太可能做您想要的事情。您还应该考虑使用Option
来保存叶子指针,而不要使用null
。