Mutual recursion: Difference between revisions

Content added Content deleted
(Added FreeBASIC)
Line 236: Line 236:
In AWK it is enough that both functions are defined somewhere. It matters not whether the BEGIN block is before or after the function definitions.
In AWK it is enough that both functions are defined somewhere. It matters not whether the BEGIN block is before or after the function definitions.


<lang awk>function F(n)
<lang awk>cat mutual_recursion.awk:
#!/usr/local/bin/gawk -f
{

if ( n == 0 ) return 1;
# User defined functions
return n - M(F(n-1))
function F(n)
}
{ return n == 0 ? 1 : n - M(F(n-1)) }


function M(n)
function M(n)
{ return n == 0 ? 0 : n - F(M(n-1)) }
{
if ( n == 0 ) return 0;
return n - F(M(n-1))
}


BEGIN {
BEGIN {
for(i=0; i < 20; i++) {
for(i=0; i <= 20; i++) {
printf "%3d ", F(i)
printf "%3d ", F(i)
}
}
print ""
print ""
for(i=0; i < 20; i++) {
for(i=0; i <= 20; i++) {
printf "%3d ", M(i)
printf "%3d ", M(i)
}
}
print ""
print ""
}</lang>
}</lang>

{{out}}
<pre>
$ awk -f mutual_recursion.awk
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|BASIC}}==
=={{header|BASIC}}==