Anonymous recursion: Difference between revisions
PascalABC.NET
imported>Arakov |
(PascalABC.NET) |
||
Line 2,379:
15 - 610
Hit Any Key
</pre>
=={{header|PascalABC.NET}}==
<syntaxhighlight lang="pascal">
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.
</syntaxhighlight>
or
<syntaxhighlight lang="pascal">
function Fib(n: integer): integer;
function fibHelper(n,a,b: integer): integer :=
n = 1 ? a : fibHelper(n-1, b, a + b);
begin
if n <= 0 then
raise new System.ArgumentOutOfRangeException('Must be > 0','n');
Result := fibHelper(n,1,1);
end;
begin
for var i:=1 to 10 do
Fib(i).Print;
end.
</syntaxhighlight>
{{out}}
<pre>
1 1 2 3 5 8 13 21 34 55
</pre>
|