25 lines
482 B
Plaintext
25 lines
482 B
Plaintext
program Factorial3;
|
|
|
|
{$APPTYPE CONSOLE}
|
|
|
|
function FactorialTailRecursive(aNumber: Integer): Int64;
|
|
|
|
function FactorialHelper(aNumber: Integer; aAccumulator: Int64): Int64;
|
|
begin
|
|
if aNumber = 0 then
|
|
Result := aAccumulator
|
|
else
|
|
Result := FactorialHelper(aNumber - 1, aNumber * aAccumulator);
|
|
end;
|
|
|
|
begin
|
|
if aNumber < 1 then
|
|
Result := 1
|
|
else
|
|
Result := FactorialHelper(aNumber, 1);
|
|
end;
|
|
|
|
begin
|
|
Writeln('5! = ', FactorialTailRecursive(5));
|
|
end.
|