bascan
11/19/2019, 4:48 PMtailrec fun increment(i: Int): Int =
if (i == 3) i
else i + increment(i + 1)
todd.ginsberg
11/19/2019, 4:53 PM+
not the increment
function callAshutosh Panda
11/19/2019, 4:54 PMeekboom
11/19/2019, 4:55 PMeekboom
11/19/2019, 4:55 PMbascan
11/19/2019, 5:00 PMtailrec fun increment(i: Int): Int =
if (i == 3) i
else {
val j = i + 1
i + increment(j)
}
sikri
11/19/2019, 5:01 PMincrement(j)
, but adding i
to result of increment.
Therefore, there is no tail recursion, as on stack should exist value of i and code should know about adding operationmarstran
11/19/2019, 5:10 PMfun increment(i: Int): Int {
tailrec fun innerIncrement(i: Int, acc: Int): Int =
if (i == 3) i + acc
else innerIncrement(i + 1, acc + i)
return innerIncrement(i, 0)
}
sikri
11/19/2019, 5:10 PMtailrec fun increment(i: Int, acc: Int = 0): Int {
return if (acc == 3) acc
else {
val j = i + 1
increment(j, acc + j)
}
}
marstran
11/19/2019, 5:10 PMsikri
11/19/2019, 5:10 PMbascan
11/19/2019, 5:15 PM