私は実際にscalaを学んでおり、末尾再帰について質問があります。scala で末尾再帰を使用した階乗の例を次に示します。
def factorial(n: Int): Int = {
@tailrec
def loop(acc: Int, n: Int): Int = {
if (n == 0) acc
else loop(n * acc, n - 1)
}
loop(1, n)
}
私の質問は、パラメーターを更新するacc
ことです。関数で行うようにloop
、副作用と見なすことができますか? FP では、副作用のリスクを防止または軽減したいと考えています。
多分私はこれを誤解していますが、誰かが私にこの概念を説明してもらえますか?
ご協力いただきありがとうございます