SPIRIT3823, да ти шо? А не пиздишь? Я писал в двух вариантах, NODRec и NODNonRec. Прости, сырца нет, так что держи не мой, на Паскале:
function nod( a, b: longint): longint;
begin
while (a <> 0) and (b <> 0) do begin
if a >= b then
a:= a mod b
else
b:= b mod a;
end;
nod:= a + b;
end;
Так как алгоритм является Хвостовой рекурсией, то рекурсию можно заменить итерацией.