Реализации алгоритмов/Алгоритм Евклида: различия между версиями

→‎C#: Добавлены пояснения и пример с рекурсией
(→‎C#: Добавлены пояснения и пример с рекурсией)
 
==[[w:C_Sharp|C#]]==
Вместо <code>T</code> следует подставить любой целочисленный тип — <code>byte</code>, <code>long</code>, <code>UInt32</code> и т. д. (C#, в отличие от C++ и Java, не поддерживает [[w:Утиная типизация|«утиную» типизацию]] для обобщённых типов, а также не предоставляет ни отдельного интерфейса для числовых типов, ни средств создания псевдонимов типов (наподобие <code>typedef</code> в C/C++).
 
Деление с остатком, без рекурсии:
<source lang="csharp">
static intT GCD (intT a, intT b)
{
while (b != 0)
b = a % (a = b);
return Math.Abs(a);
}
</source>
 
Деление с остатком, рекурсия:
<source lang="csharp">
static T GCD (T a, T b)
{
return b == 0 ? Math.Abs(a) : GCD(b, a % b);
}
</source>
Анонимный участник