Почему я получаю java.lang.OutOfMemoryError: пространство кучи Java, когда я вызываю первую функцию с большим числом, например 2000, и не получаю никакой ошибки от второй реализации?
Не будет ли зарезервировано одинаковое количество памяти?
object TailRecursion extends App{
@tailrec
def repeatString (str: String, n:Integer ): String = {
if (n == 0) ""
else if (n == 1) str
else repeatString(str+str, n-1)
}
@tailrec
def repeatString(str:String, n:Integer, accumulator:String):String ={
if(n==0) accumulator
else repeatString(str, n-1, str+accumulator)
}
println(repeatString("teste", 0))
println(repeatString("teste", 1))
println(repeatString("teste", 2))
println(repeatString("teste", 2000))
}