Si consideri il seguente frammento di programma:
Function B(n: Integer): Integer; Forward; Function A(n: Integer): Integer; Begin If (n = 0) Then A:=0 Else If(n Mod 2 = 0) Then A:=n+B(n) Else A:=B(n) End; Function B(n: Integer): Integer; Begin If(n = 0) then B:=0 Else If(n Mod 2 = 1) Then B:=n+A(n-1) Else B:=A(n-1) End;
Dire che cosa calcola la funzione A() assumendo che venga invocata passando un intero positivo.
Soluzione: La somma di tutti di tutti i naturali tra 0 ed il parametro.
Soluzione
Tratta da: Materiale didattico 2008
Si tratta di un esempio di funzioni mutualmente ricorsive.
In modo volutamente contorto viene calcolata la somma distinguendo tra n pari ed n dispari.Ad esempio
A(3) = B(3) = 3+A(2) = 3+2+B(1) = 3+2+1+A(0) = 3+2+1+0 = 6.