In the previous section we saw the function fact_rec
which called itself.
If you have two functions, fun1
and fun2
, and fun1
calls fun2
, and fun2
calls fun1
, then this pair of functions are mutually recursive.
This extends to any amount of functions linked in this way.
This is a rather contrived example of a pair of mutually recursive functions.
PROC f(n) IF n=1 RETURN 1 ELSEIF n>=2 RETURN n*g(n-1) ELSE Raise("F") ENDIF ENDPROC PROC g(n) IF n=1 RETURN 2*1 ELSEIF n>=2 RETURN 2*n*f(n-1) ELSE Raise("G") ENDIF ENDPROC
Both functions are very similar to the fact_rec
function, but g
returns double the normal values.
The overall effect is that every other value in long version of the multiplication is doubled.
So, f(n)
computes
n*(2*(n-1))*(n-2)*(2*(n-3))*...*2
which probably isn't all that interesting.
Go to the Next or Previous section, the Detailed Contents, or the Amiga E Encyclopedia.