Anonymous recursion: Difference between revisions

Add Seed7 example
(Add Nimrod)
(Add Seed7 example)
Line 1,791:
{{out}}
<pre>'(1 1 2 3 5 8 13 21 34 55)</pre>
 
=={{header|Seed7}}==
Uses a local function to do the dirty work. The local function has a name, but it is not in the global namespace.
<lang seed7>$ include "seed7_05.s7i";
 
const func integer: fib (in integer: x) is func
result
var integer: fib is 0;
local
const func integer: fib1 (in integer: n) is func
result
var integer: fib1 is 0;
begin
if n < 2 then
fib1 := n;
else
fib1 := fib1(n-2) + fib1(n-1);
end if;
end func;
begin
if x < 0 then
raise RANGE_ERROR;
else
fib := fib1(x);
end if;
end func;
 
const proc: main is func
local
var integer: i is 0;
begin
for i range 0 to 4 do
writeln(fib(i));
end for;
end func;</lang>
 
{{out}}
<pre>
0
1
1
2
3
</pre>
 
=={{header|Sidef}}==