{ File: ricorsio.pas } { Scopo: primo esempio di procedura ricorsiva } program EsempioRicorsione; var j : integer; procedure Ricorsiva (i: integer); begin { Ricorsiva } write('Adesso i vale ', i); if i = 0 then writeln(' - Ho finito') else begin writeln(' - Attivo Ricorsiva(', i-1,')'); Ricorsiva(i-1); writeln('Ricorsiva(', i-1, ') appena terminata - Adesso i vale ', i) end end; { Ricorsiva } begin { EsempioRicorsione } write('Inserisci un intero non negativo: '); readln(j); Ricorsiva(j); writeln('Ho finito') end. { EsempioRicorsione } { ESEMPIO DI ESECUZIONE: Inserisci un intero non negativo: 3 Adesso i vale 3 - Attivo Ricorsiva(2) Adesso i vale 2 - Attivo Ricorsiva(1) Adesso i vale 1 - Attivo Ricorsiva(0) Adesso i vale 0 - Ho finito Ricorsiva(0) appena terminata - Adesso i vale 1 Ricorsiva(1) appena terminata - Adesso i vale 2 Ricorsiva(2) appena terminata - Adesso i vale 3 Ho finito }