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

Contenuto cancellato Contenuto aggiunto
cambio avanzamento a 75%
Ramac (discussione | contributi)
aggiungo
Riga 1:
{{Implementazioni di algoritmi}}
In matematica l'''la'elevamento a potenza''' è un' operazione che associa ad una coppia di numeri a e n - detti rispettivamente base ed esponente - il numero dato dalla moltiplicazione di ''a'' per sé stesso iterata per ''n'' volte.
 
===Implementazione in [[C]]/[[C++]] - versione ricorsiva===
<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++]] - versione non ricorsiva===
<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}}