꼬리 재귀는 항상 루프로 대체할 수 있으며, 그래야 훨씬 빠르게 처리됩니다. 일부 JVM에서는 tail-call 최적화가 수행됩니다. 그러므로 꼬리 재귀 솔루션은 가상 머신에 따라 성능 특성이 상당히 다를 수 있습니다.
예:
int factorial(int val, int runningVal) {
if (val == 1) {
return runningVal;
} else {
return factorial(val - 1, runningVal * val);
}
}
빠른 수정을 적용한 후:
int factorial(int val, int runningVal) {
while (true) {
if (val == 1) {
return runningVal;
} else {
runningVal = runningVal * val;
val = val - 1;
}
}
}