Αναδρομικές τεχνικές

Παράδειγμα

program recursive;

(* Αναδρομικός ορισμός δεδομένων *)
type
  link = ^integer_list;

  integer_list =
    record
      value : integer;
      next  : link;
    end;

(* Αναδρομική διαδικασία *)
procedure russian_doll(size : integer);
var i : integer;

begin
   write('[');
   for i := 1 to size do
      write('-');
   writeln(']');
   if size > 1 then
     russian_doll(size - 1);
end (* russina_doll *) ;


(* Αναδρομική συνάρτηση *)
function factorial(n : integer) : integer;
begin
     if n = 0 then
        factorial := 1
     else
         factorial := n * factorial(n - 1)
end (* factorial *);

begin
  writeln(factorial(5));
  russian_doll(10);
end.

Αποτελέσματα

120
[----------]
[---------]
[--------]
[-------]
[------]
[-----]
[----]
[---]
[--]
[-]