Implementazioni di algoritmi/Elevazione a potenza: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
cambio avanzamento a 75% |
aggiungo |
||
Riga 1:
{{Implementazioni di algoritmi}}
In matematica l'''
===Implementazione in [[C]]/[[C++]]
<source lang="cpp">
unsigned int pow_n(int a,unsigned int ex) {
Line 14 ⟶ 15:
</source>
Tuttavia la versione ricorsiva presenta alcune limitazioni per quanto riguarda i linguaggi C-like, quindi:
===Implementazione in [[C]]/[[C++]]
<source lang="cpp">
unsigned int pow_n(int a,unsigned int ex) {
Line 27 ⟶ 28:
} ;
</source>
Oltre a queste versioni semplici esistono anche modi per diminuire la complessità operazionale come ad esempio l'algoritmo di elevazione a potenza quadratico 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 [[Pascal]] – non ricorsivo ===
La funzione lavora con base razionale e esponente intero relativo (ad esempio <math>{ \left( { 3 \over 2 } \right) }^2 </math> o <math>3^{-2}</math>).
<source lang=pascal>
function potenza (b: real; e: integer): real;
var r: real; i : integer;
begin
r := 1;
if (b=0) and (e=0) then
writeln('Errore: l''espressione non ha significato')
else
begin
for i := 1 to abs(e) do
r := r * b;
if e < 0 then
r := 1/r;
potenza := r;
end;
end;
</source>
==Complessità minore==
===Implementazione in [[C]]/[[C++]]===
Line 43 ⟶ 66:
} ;
</source>
[[Categoria:Implementazioni di algoritmi|Elevazione a potenza]]
{{Avanzamento|75%|30 luglio 2008}}
|