RosettaCodeData/Task/Anonymous-recursion/PascalABC.NET/anonymous-recursion-1.pas

14 lines
335 B
ObjectPascal

function Fib(n: integer): integer;
begin
if n <= 0 then
raise new System.ArgumentOutOfRangeException('Must be > 0','n');
var fibHelper: (integer,integer,integer) -> integer;
fibHelper := (n,a,b) -> n = 1 ? a : fibHelper(n-1, b, a + b);
Result := fibHelper(n,1,1);
end;
begin
for var i:=1 to 10 do
Fib(i).Print;
end.