Scala:递归和堆栈溢出错误

Scala: recursion and stack overflow error

我正在尝试做以下练习:

定义一个递归函数 inteDef 逼近函数的定积分 f 区间 [a,b] 使用复合梯形法则。该函数将 eps 作为参数,它标记了区间 [a,b] 将被划分的子区间的最大长度。因此,如果 [a,b] 的长度小于或等于 eps, 函数将 return 相应梯形的面积。否则,它将区间 [a,b] 分成两个相同长度的子区间(原始区间的一半)并且递归地逼近两个区间的积分和return他们的总和。

我的解决方案尝试是:

def inteDef(f: Double => Double, x: Double, y: Double, eps: Double): Double = {
  if (abs(y - x) <= eps)
    (y - x) * (f(x) + f(y)) / 2.0
  else
    inteDef(f, x, (y-x)/2.0, eps) + inteDef(f, (y-x)/2.0, y, eps)
  }

eps 大于或等于 abs(y - x) 时有效,否则会出现堆栈溢出错误。

(y - x) / 2.0 不在 xy 之间。

(x + y) / 2.0是.