Mutual recursion: Difference between revisions

Content added Content deleted
m (→‎with memoization, specific entry: optimized the 1st DO loop, it's over a magnitude faster.)
(Added Wren)
Line 3,525: Line 3,525:
<pre> 1 1 2 2 3 3 4 5 5 6 6 7 8 8 9 9 10 11 11 12 13
<pre> 1 1 2 2 3 3 4 5 5 6 6 7 8 8 9 9 10 11 11 12 13
0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9 10 11 11 12 12 </pre>
0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9 10 11 11 12 12 </pre>

=={{header|Wren}}==
<lang ecmascript>var M // forward declaration

var F = Fn.new { |n|
if (n == 0) return 1
return n - M.call(F.call(n-1))
}

M = Fn.new { |n|
if (n == 0) return 0
return n - F.call(M.call(n-1))
}

System.write("F(0..20): ")
(0..20).each { |i| System.write("%(F.call(i)) ") }
System.write("\nM(0..20): ")
(0..20).each { |i| System.write("%(M.call(i)) ") }
System.print()</lang>

{{out}}
<pre>
F(0..20): 1 1 2 2 3 3 4 5 5 6 6 7 8 8 9 9 10 11 11 12 13
M(0..20): 0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9 10 11 11 12 12
</pre>


=={{header|x86 Assembly}}==
=={{header|x86 Assembly}}==