Wie wärs damit:
Delphi-Quellcode:
function fakultaet(n: Int64): Int64;
begin
if n < 0 or n > 20 then
raise ERangeError.Create('Wert ausserhalb des Wertebereichs');
if (n = 0) or (n = 1) then
result := 1
else
result := fakultaet(n - 1) * n;
end;
20! passt noch in den Int64, 21! nicht mehr => Fehler wird abgefangen bevor losrekursiert wird