Mutual recursion: Difference between revisions
Content added Content deleted
m (→{{header|CLU}}: Oops, untabify previous) |
Deadmarshal (talk | contribs) (Added Oberon-2) |
||
Line 2,738: | Line 2,738: | ||
echo f(i) |
echo f(i) |
||
echo m(i)</syntaxhighlight> |
echo m(i)</syntaxhighlight> |
||
=={{header|Oberon-2}}== |
|||
{{trans|Modula-2}} |
|||
<syntaxhighlight lang="oberon2"> |
|||
MODULE MutualRecursion; |
|||
IMPORT Out; |
|||
TYPE |
|||
Fn = PROCEDURE(n:INTEGER):INTEGER; |
|||
PROCEDURE^ M(n:INTEGER):INTEGER; |
|||
PROCEDURE F(n:INTEGER):INTEGER; |
|||
BEGIN |
|||
IF n=0 THEN RETURN 1 |
|||
ELSE RETURN n-M(F(n-1)) |
|||
END; |
|||
END F; |
|||
PROCEDURE M(n:INTEGER):INTEGER; |
|||
BEGIN |
|||
IF n=0 THEN RETURN 0 |
|||
ELSE RETURN n-F(M(n-1)) |
|||
END; |
|||
END M; |
|||
(* Print the first few values of one of the functions *) |
|||
PROCEDURE Show(name:ARRAY OF CHAR;fn:Fn); |
|||
CONST Max = 15; |
|||
VAR i:INTEGER; |
|||
BEGIN |
|||
Out.String(name); |
|||
Out.String(": "); |
|||
FOR i := 0 TO Max DO |
|||
Out.Int(fn(i),0); |
|||
Out.String(" "); |
|||
END; |
|||
Out.Ln; |
|||
END Show; |
|||
(* Show the first values of both F and M *) |
|||
BEGIN |
|||
Show("F", F); |
|||
Show("M", M); |
|||
END MutualRecursion. |
|||
</syntaxhighlight> |
|||
=={{header|Objeck}}== |
=={{header|Objeck}}== |