Mutual recursion: Difference between revisions
Content added Content deleted
(moved 2nd autohotkey example to proper place; moved prolog after powershell; minor changes to basic & mmix) |
|||
Line 78: | Line 78: | ||
0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9 10 11 11 12 |
0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9 10 11 11 12 |
||
</pre> |
</pre> |
||
=={{header|AutoHotkey}}== |
=={{header|AutoHotkey}}== |
||
<lang AutoHotkey>Loop 20 |
<lang AutoHotkey>Loop 20 |
||
Line 90: | Line 91: | ||
Return n ? n - F(M(n-1)) : 0 |
Return n ? n - F(M(n-1)) : 0 |
||
}</lang> |
}</lang> |
||
{{trans|C}} |
|||
This one is an alternative to the above. |
|||
<lang AutoHotkey>main() |
|||
Return |
|||
F(n) |
|||
{ |
|||
If (n == 0) |
|||
Return 1 |
|||
Else |
|||
Return n - M(F(n-1)) |
|||
} |
|||
M(n) |
|||
{ |
|||
If (n == 0) |
|||
Return 0 |
|||
Else |
|||
Return n - F(M(n-1)) ; |
|||
} |
|||
main() |
|||
{ |
|||
i = 0 |
|||
While, i < 20 |
|||
{ |
|||
male .= M(i) . "`n" |
|||
female .= F(i) . "`n" |
|||
i++ |
|||
} |
|||
MsgBox % "male:`n" . male |
|||
MsgBox % "female:`n" . female |
|||
}</lang> |
|||
=={{header|AWK}}== |
=={{header|AWK}}== |
||
In AWK it is enough that both functions are defined before either is called. |
In AWK it is enough that both functions are defined before either is called. |
||
Line 116: | Line 154: | ||
=={{header|BASIC}}== |
=={{header|BASIC}}== |
||
{{works with| |
{{works with|QBasic}} |
||
<lang qbasic>DECLARE FUNCTION f! (n!) |
<lang qbasic>DECLARE FUNCTION f! (n!) |
||
DECLARE FUNCTION m! (n!) |
DECLARE FUNCTION m! (n!) |
||
FUNCTION f! (n!) |
FUNCTION f! (n!) |
||
IF n = 0 THEN |
IF n = 0 THEN |
||
f = 1 |
f = 1 |
||
ELSE |
ELSE |
||
f = m(f(n - 1)) |
f = m(f(n - 1)) |
||
END IF |
END IF |
||
END FUNCTION |
END FUNCTION |
||
FUNCTION f! (n!) |
FUNCTION f! (n!) |
||
IF n = 0 THEN |
IF n = 0 THEN |
||
m = 0 |
m = 0 |
||
ELSE |
ELSE |
||
m = f(m(n - 1)) |
m = f(m(n - 1)) |
||
END IF |
END IF |
||
END FUNCTION</lang> |
END FUNCTION</lang> |
||
Line 159: | Line 197: | ||
} |
} |
||
print "\n";</lang> |
print "\n";</lang> |
||
=={{header|AutoHotkey}}== |
|||
{{trans|C}} |
|||
<lang AutoHotkey>main() |
|||
Return |
|||
F(n) |
|||
{ |
|||
If (n == 0) |
|||
Return 1 |
|||
Else |
|||
Return n - M(F(n-1)) |
|||
} |
|||
M(n) |
|||
{ |
|||
If (n == 0) |
|||
Return 0 |
|||
Else |
|||
Return n - F(M(n-1)) ; |
|||
} |
|||
main() |
|||
{ |
|||
i = 0 |
|||
While, i < 20 |
|||
{ |
|||
male .= M(i) . "`n" |
|||
female .= F(i) . "`n" |
|||
i++ |
|||
} |
|||
MsgBox % "male:`n" . male |
|||
MsgBox % "female:`n" . female |
|||
}</lang> |
|||
=={{header|C}}== |
=={{header|C}}== |
||
Line 788: | Line 792: | ||
TRAP 0,Fputs,StdOut |
TRAP 0,Fputs,StdOut |
||
TRAP 0,Halt,0</lang> |
TRAP 0,Halt,0</lang> |
||
Output: |
Output: |
||
~/MIX/MMIX/Rosetta> mmix mutualrecurs1 |
|||
1 1 2 2 3 3 4 5 5 6 6 7 8 8 9 9 10 11 11 12 13 13 14 14 15 |
1 1 2 2 3 3 4 5 5 6 6 7 8 8 9 9 10 11 11 12 13 13 14 14 15 |
||
0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9 10 11 11 12 12 13 14 14 15 |
0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9 10 11 11 12 12 13 14 14 15 |
||
=={{header|Objective-C}}== |
=={{header|Objective-C}}== |
||
Line 1,007: | Line 1,012: | ||
0 |
0 |
||
(- N (f (m (dec N)))) ) )</lang> |
(- N (f (m (dec N)))) ) )</lang> |
||
=={{header|Prolog}}== |
|||
<lang prolog>female(0,1). |
|||
female(N,F) :- N>0, |
|||
N1 is N-1, |
|||
female(N1,R), |
|||
male(R, R1), |
|||
F is N-R1. |
|||
male(0,0). |
|||
male(N,F) :- N>0, |
|||
N1 is N-1, |
|||
male(N1,R), |
|||
female(R, R1), |
|||
F is N-R1.</lang> |
|||
{{works with|GNU Prolog}} |
|||
<lang prolog>flist(S) :- for(X, 0, S), female(X, R), format('~d ', [R]), fail. |
|||
mlist(S) :- for(X, 0, S), male(X, R), format('~d ', [R]), fail.</lang> |
|||
'''Testing''' |
|||
<pre>| ?- flist(19). |
|||
1 1 2 2 3 3 4 5 5 6 6 7 8 8 9 9 10 11 11 12 |
|||
no |
|||
| ?- mlist(19). |
|||
0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9 10 11 11 12</pre> |
|||
=={{header|PostScript}}== |
=={{header|PostScript}}== |
||
Line 1,056: | Line 1,033: | ||
}def |
}def |
||
</lang> |
</lang> |
||
=={{header|PowerShell}}== |
=={{header|PowerShell}}== |
||
<lang powershell>function F($n) { |
<lang powershell>function F($n) { |
||
Line 1,066: | Line 1,044: | ||
return $n - (F (M ($n - 1))) |
return $n - (F (M ($n - 1))) |
||
}</lang> |
}</lang> |
||
=={{header|Prolog}}== |
|||
<lang prolog>female(0,1). |
|||
female(N,F) :- N>0, |
|||
N1 is N-1, |
|||
female(N1,R), |
|||
male(R, R1), |
|||
F is N-R1. |
|||
male(0,0). |
|||
male(N,F) :- N>0, |
|||
N1 is N-1, |
|||
male(N1,R), |
|||
female(R, R1), |
|||
F is N-R1.</lang> |
|||
{{works with|GNU Prolog}} |
|||
<lang prolog>flist(S) :- for(X, 0, S), female(X, R), format('~d ', [R]), fail. |
|||
mlist(S) :- for(X, 0, S), male(X, R), format('~d ', [R]), fail.</lang> |
|||
'''Testing''' |
|||
<pre>| ?- flist(19). |
|||
1 1 2 2 3 3 4 5 5 6 6 7 8 8 9 9 10 11 11 12 |
|||
no |
|||
| ?- mlist(19). |
|||
0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9 10 11 11 12</pre> |
|||
=={{header|Pure}}== |
=={{header|Pure}}== |