Differenze tra le versioni di "Implementazioni di algoritmi/Algoritmo di Euclide"

nessun oggetto della modifica
(Ottimizzato codice VB.NET)
Dati due numeri naturali a e b, si controlla se b è zero. Se lo è, a è il MCD. Se non lo è, si divide a / b e si assegna ad r il resto della divisione (operazione indicata con "a modulo b" più sotto). Se r = 0 allora si può terminare affermando che b è il MCD cercato altrimenti occorre assegnare a = b e b = r e si ripete nuovamente la divisione. L'algoritmo può essere anche espresso in modo naturale utilizzando la '''ricorsione in coda'''.
 
== Implementazioni ==
=== Implementazione in [[C]]/[[C++]] - versione ricorsiva ===
=== [[C]]/[[C++]] ===
; versione ricorsiva
<source lang="c">
int mcd(int a, int b) {
</source>
 
=== Implementazione in [[C]]/[[C++]] -; versione non ricorsiva ===
<source lang="c">
int mcd(int a, int b) {
}
</source>
 
=== Implementazione in [[Python]] - versione ricorsiva ===
=== [[Python]] ===
; versione ricorsiva
<source lang="python">
def mcd(a,b):
return mcd(b,(a%b))
</source>
 
=== Implementazione in [[Python]] - versione non ricorsiva ===
; versione non ricorsiva
<source lang="python">
def mcd(a, b):
return a
</source>
 
=== Implementazione in [[Visual basic.net|Visual Basic .NET]] - versione non ricorsiva ===
=== [[MATLAB]]/Octave ===
; versione ricorsiva
<source lang="MATLAB">
function val = mcd(a, b):
if b == 0
val = a;
else
val = mcd(b, rem(a,b))
end
</source>
 
; versione non ricorsiva
<source lang="MATLAB">
function val = mcd(a, b):
if b == 0
val = a;
else
temp = a;
a = b;
b = rem(temp,b);
end
</source>
 
=== Implementazione in [[Visual basic.net|Visual Basic .NET]] - versione non ricorsiva ===
; versione non ricorsiva
<source lang="vb">
Function MCD(ByVal a As Integer, ByVal b As Integer) As Integer
End Function
</source>
 
[[Categoria:Implementazioni di algoritmi|Algoritmo di Euclide]]
 
440

contributi