Pagina 204 del libro di testo
print("Valore di n") # c1
n = int(input()) # c2
x = n # c3
i = 1 # c4
while(i < 5): # c5
x = x*n # c6
i = i+1 # c7
print(x) # c8
T = c1+c2+c3+c4+[…]+c8
= c1+c2+c3+c4+[c5+c6+c7]*4+c5+c8
= 3*4 + 6
= 18
print("Base") # c1
x = float(input()) # c2
print("Esponente") # c3
n = int(input()) # c4
q = 1 # c5
i = 1 # c6
while(i > 0): # c7
q = q*x # c8
i = i-1 # c9
print(q) # c10
T = c1+c2+c3+c4+c5+c6+[…]+c10
= [c7+c8+c9]*n+c7+7
= 3*n +1+7
=
print("Base") # c1
x = float(input()) # c2
print("Esponente") # c3
n = int(input()) # c4
q = 1 # c5
i = n # c6
while(i > 1): # c7
if(i % 2 == 0): # c8
x = x*x # c9
i = i // 2 # c10
else:
q = q*x # c11
i = i-1 # c12
q = q*x # c13
print(q) # c14
n potenza di 2
T(2) = c1+c2+c3+c4+c5+c6 +[c7+c8+c9+c10] +[c7] +c13+c14 = t2+9 = 13
T(4) = c1+c2+c3+c4+c5+c6 +[c7+c8+c9+c10] +[c7+c8+c9+c10] +[c7] +c13+c14 = 2*t2+9 = 17
T(8) = c1+c2+c3+c4+c5+c6 +[c7+c8+c9+c10] +[c7+c8+c9+c10] +[c7+c8+c9+c10] +[c7] +c13+c14 = 3*t2+9 = 21
T(n) =
n non è potenza di 2
T(1) = c1+c2+c3+c4+c5+c6 +[c7] +c13+c14 = 9
T(3) = c1+c2+c3+c4+c5+c6 +[c7+c8+c11+c12] +[c7+c8+c9+c10] +[c7] +c13+c14 = t1+t2+9 = 17
T(5) = c1+c2+c3+c4+c5+c6 +[c7+c8+c11+c12] +[c7+c8+c9+c10] +[c7+c8+c9+c10] +[c7] +c13+c14 = t1+2*t2+9 = 21
T(6) = c1+c2+c3+c4+c5+c6 +[c7+c8+c9+c10] +[c7+c8+c11+c12] +[c7+c8+c9+c10] +[c7] +c13+c14 = t1+2*t2+9 = 21
T(7) = c1+c2+c3+c4+c5+c6 +[c7+c8+c11+c12] +[c7+c8+c9+c10] +[c7+c8+c11+c12] +[c7+c8+c9+c10] +[c7] +c13+c14 = 2*t1+2*t2+9 = 25
Quindi:
Calcolare la potenza con l’algoritmo classico porta a una complessità in tempo lineare, , che può essere leggermente migliorata sapendo che n è positivo.
Con l’algoritmo “furbo” si ottiene una complessità in tempo logaritmica: