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}}== |