我有几行scala代码定义了一个函数A,它重复调用functionB直到n为零(函数B n次)。每次迭代n减少1,并且如上所述更新x0。
def functionA(c: Double, x0: Double, n: Int): Double = {
require(x0>0) //This is a must
while(n>0){
x0=functionB(c, x0) //functionB predefined
n--
}
x0
}
问题在于变量似乎无法改变,如行
x0=functionB(c, x0)
n--
正在返回错误。如果当前结构没有改变并且总行数保持不变,我该如何正确地写行?
答案 0 :(得分:8)
Scala中的函数参数为val
,因此您无法修改它们。
递归编写函数。类似的东西:
def functionA(c: Double, x0: Double, n: Int): Double = {
require(x0 > 0) //This is a must
if (n < 0) {
x0
} else {
functionA(c, functionB(c, x0), n - 1)
}
}