Mutual recursion: Difference between revisions

Added Wren
m (→‎with memoization, specific entry: optimized the 1st DO loop, it's over a magnitude faster.)
(Added Wren)
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
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}}==
9,477

edits