Scala中的递归和"右侧"

jcm*_*jcm 0 recursion scala

我在Scala中看到了以下函数:

def sqrtIter(guess: Double, x: Double): Double =
    if (isGoodEnough(guess, x)) guess
    else sqrtIter(improve(guess, x), x)
Run Code Online (Sandbox Code Playgroud)

随着解释:

请注意,sqrtIter是递归的,它的右侧是自己调用的

有人可以在这里解释"右手边"的含义吗?

kir*_*uku 5

右手侧(rhs)和左手侧(lhs)是常用词,用于描述由分隔符标记的边.

对于Scala,分隔符号是等号.这意味着lhs总是指定一个定义,比如

def sqrtIter(guess: Double, x: Double): Double
Run Code Online (Sandbox Code Playgroud)

而rhs总是指定实现,比如

if (isGoodEnough(guess, x)) guess
else sqrtIter(improve(guess, x), x)
Run Code Online (Sandbox Code Playgroud)

最后lhs,rhs和分隔符符号形成整个语句:

<lhs> = <rhs>
Run Code Online (Sandbox Code Playgroud)