Rekursi dalam pascal

Seperti halnya dalam beberapa bahasa pemrograman lain, kode program dalam pascal juga bisa menggunakan rekursi. Rekursi adalah pemanggilan fungsi atau prosedur oleh dirinya sendiri. Berikut ini contoh program algoritma euclidean dengan menggunakan fungsi dan rekursi.

Program Euclidean;
uses crt;
var a, b : integer;

function fpb(m, n : integer) : integer;
var r : integer;
begin
    r := m mod n;
    while (r <> 0) do begin
        m := n;
        n := r;
        r := m mod n;
    end;
    fpb := n;
end;

Begin
    clrscr;
    a:=45;
    b:=21;
    write('fpb ', a, ' dan ', b, ' adalah ', fpb (a, b));
    readln;
end.
Rekursi sebenarnya tidak harus menggunakan fungsi, bisa juga menggunakan prosedur. Contohnya :
Program Euclidean;
uses crt;
var a, b, c : integer;
procedure fpb(m:integer; var n : integer);
begin
    n:=m mod n;
    if(n>0)then fpb(n, m);
end;

Begin
    clrscr;
    a:=45;
    b:=21;
    c:=b;
    fpb (a, c);
    write('fpb ', a, ' dan ', b, ' adalah ', c);
    readln;
end.


Yang perlu diperhatikan adalah bahwa rekursi mutlak membutuhkan syarat untuk berhenti yang bisa diletakkan dalam percabangan atau perulangan. Jika tidak ada syarat pemanggilan dalam rekursi, program akan error karena rekursi akan terus berulang tanpa henti.