Implementazioni di algoritmi/Elevazione a potenza: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 51:
==Algoritmi con complessità minore==
Oltre a queste versioni semplici esistono anche modi per diminuire la complessità operazionale come ad esempio l'algoritmo di elevazione a potenza binario o quello, probabilmente il migliore per le operazioni molto complesse, che fa uso della ricerca della catena di addizione più corta (vedi ''addition-chain exponentiation)''.
===Implementazione in [[C]]/[[C++]] - versione ricorsiva===
<source lang="cpp">
unsigned int sq_pow_n(int a,unsigned int ex) {
Riga 65:
} ;
</source>
===Implementazione in [[C]] - versione non ricorsiva===
 
<source lang="c">
 
long pow(long x, long n)
{
long result = 1;
while ( n ) {
if ( n & 1 ) {
result = result * x;
n = n-1;
}
x = x*x;
n = n/2;
}
return result;
}
</source>
===Implementazione in [[Ruby]] - versione non ricorsiva===
<source lang="ruby">
def power(x,n)
result = 1
while n.nonzero?
if n[0].nonzero?
result = result * x
n = n-1
end
x = x*x
n = n/2
end
return result
end
</source>
 
[[Categoria:Implementazioni di algoritmi|Elevazione a potenza]]