Perhatikan fungsi berikut ini:
function tail(x, y: integer): integer;
begin
if (y=0) then tail:=x else tail:=tail(y, x mod y);
end;
Fungsi rekursif di atas ekivalen dengan fungsi...
A.
function tail(x, y:integer): integer;
var z:integer;
begin
while (y<>0) do
begin z:=x mod y; x:=y; y:=z end;
tail:=x;
end;
B.
function tail(x, y:integer): integer;
begin
if (y=0)
then tail:=x
else tail:=tail(y mod x, y);
end;
C.
function tail(x, y:integer): integer;
var z:integer;
begin
while (y<>0) do
begin z:=x mod y; x:=y; y:=z end;
tail:=z;
end;
D.
function tail(x, y:integer): integer;
begin
if (y=0)
then tail:=y
else tail:=tail(y, x mod y);
end;
E.
function tail(x, y:integer): integer;
begin
if (x=0)
then tail:=x
else tail:=tail(y, x mod y);
end;