0
我有幾行scala代碼定義了一個functionA,它重複調用functionB,直到n爲零(functionB n次)。每次迭代n減少1,並且如上所述更新x0。scala函數變量不能改變
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--
正在返回的錯誤。如果當前的結構沒有改變,並且線的總數保持不變,那我該怎麼寫對嗎?
這是否符合尾遞歸優化? –
它應該作爲最後一行是遞歸調用。 (也許最好讓Scala編譯器用'@ tailrec'註釋驗證我們的意圖!) –
這取決於。如果它是在一個「對象」中。如果它是'私人',是的。如果它是'最終',是的。否則,不會導致編譯器無法知道它在子類型中未被覆蓋。 –