User Guide

Table Of Contents
Using UDFs effectively 199
A recursive function, like looping code, must have an end condition that always stops the
function. Otherwise, the function will continue until a system error occurs or you stop the
ColdFusion server.
The following example calculates the factorial of a number, that is, the product of all the integers
from 1 through the number; for example, 4 factorial is 4 X 3 X 2 X 1 = 24.
function Factorial(factor) {
If (factor LTE 1)
return 1;
else
return factor * Factorial(factor -1);
}
If the function is called with a number greater than 1, it calls itself using an argument one less
than it received. It multiplies that result by the original argument, and returns the result.
Therefore, the function keeps calling itself until the factor is reduced to 1. The final recursive call
returns 1, and the preceding call returns 2 * 1, and so on until all the initial call returns the end
result.
Caution: If a recursive function calls itself too many times, it causes a stack overflow. Always test any
recursive functions under conditions that are likely to cause the maximum number of recursions to
ensure that they do not cause a stack overflow.