본문 바로가기
Kotlin

코틀린 재귀호출 최적화(Tail-Call)

by ybs 2021. 12. 16.
반응형

이전 글에서 자바로 꼬리재귀(TCO) 구현을 설명했다. 하지만 내용이 쉽지 않았는데 코틀린은 tailrec 키워드를 제공하면서 가독성 좋게 구현이 가능하다. 

@Test
fun factorialTest() {
    print(factorial(5))
}

tailrec fun factorial(num: Int, acc: Int = 1): Int = when (num) {
    1 -> acc
    else -> factorial(num - 1, acc * num)
}

 

일반 재귀 버전

fun factorial(num: Int): Int {
    if (num == 1) {
        return 1
    }

    return num * factorial(num - 1)
}
반응형