fun fact(x: Int): Int{
tailrec fun factTail(y: Int, z: Int): Int{
if (y == 0) return z
else return factTail(y - 1, y * z)
}
return factTail(x, 1)
}
누군가가 내게 어떻게 위의 재귀 함수가 kotlin에서 작동하는지 설명해 주시겠습니까?코 틀린 회귀
fun fact(x: Int): Int{
tailrec fun factTail(y: Int, z: Int): Int{
if (y == 0) return z
else return factTail(y - 1, y * z)
}
return factTail(x, 1)
}
누군가가 내게 어떻게 위의 재귀 함수가 kotlin에서 작동하는지 설명해 주시겠습니까?코 틀린 회귀
tailrec
키워드는 루프가있는 함수를 표현하려고 시도하는 컴파일러의 최적화로만 사용되며 stack overflow의 위험을 피하기 위해 재귀를 사용하지 않는다고 말하기 시작합니다. 우리는 재귀를 피하기 경우
함수는 다음과 같이 뭔가를 볼 수 있었다 :
이fun fact(x: Int): Int {
var result = x
for (i in x - 1 downTo 1) {
result *= i
}
return result
}
Kotlin의'tailrec'은 함수 오버 플로우를 방지합니다. 이 수정자는 컴파일러에서이를 최적화하는 데 사용됩니다. –
나는 "기능 계승"이 Kotlin의 말에서 "재미있는 사실"로 변하는 것을 좋아합니다. – bipll