Mutual recursion: Difference between revisions

Content added Content deleted
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
Line 1,327: Line 1,327:


=={{header|Java}}==
=={{header|Java}}==
Replace translation (that doesn't compile) with a Java native implementation.
{{trans|C}}
<lang java>
<lang java5>public static int f(final int n)
import java.util.HashMap;
{
import java.util.Map;
return n == 0 ? 1 : n - m(f(n - 1));
}


public static int m(final int n)
public class MutualRecursion {
{
return n == 0 ? 0 : n - f(m(n - 1));
}


public static void main(final String args[])
public static void main(final String args[]) {
int max = 20;
{
System.out.printf("First %d values of the Female sequence: %n", max);
for (int i = 0; i < 20; i++)
for (int i = 0; i < max; i++) {
System.out.println(f(i));
System.out.println();
System.out.printf(" f(%d) = %d%n", i, f(i));
for (i = 0; i < 20; i++)
}
System.out.println(m(i));
System.out.printf("First %d values of the Male sequence: %n", max);
for (int i = 0; i < 20; i++) {
}</lang>
System.out.printf(" m(%d) = %d%n", i, m(i));
}
}

private static Map<Integer,Integer> F_MAP = new HashMap<>();

private static int f(final int n) {
if ( F_MAP.containsKey(n) ) {
return F_MAP.get(n);
}
int fn = n == 0 ? 1 : n - m(f(n - 1));
F_MAP.put(n, fn);
return fn;
}

private static Map<Integer,Integer> M_MAP = new HashMap<>();

private static int m(final int n) {
if ( M_MAP.containsKey(n) ) {
return M_MAP.get(n);
}
int mn = n == 0 ? 0 : n - f(m(n - 1));
M_MAP.put(n, mn);
return mn;
}

}
</lang>
{{out}}
First 20 values of the Female sequence:
f(0) = 1
f(1) = 1
f(2) = 2
f(3) = 2
f(4) = 3
f(5) = 3
f(6) = 4
f(7) = 5
f(8) = 5
f(9) = 6
f(10) = 6
f(11) = 7
f(12) = 8
f(13) = 8
f(14) = 9
f(15) = 9
f(16) = 10
f(17) = 11
f(18) = 11
f(19) = 12
First 20 values of the Male sequence:
m(0) = 0
m(1) = 0
m(2) = 1
m(3) = 2
m(4) = 2
m(5) = 3
m(6) = 4
m(7) = 4
m(8) = 5
m(9) = 6
m(10) = 6
m(11) = 7
m(12) = 7
m(13) = 8
m(14) = 9
m(15) = 9
m(16) = 10
m(17) = 11
m(18) = 11
m(19) = 12


=={{header|JavaScript}}==
=={{header|JavaScript}}==