2017-03-03 5 views

Antwort

0
c = 0 
a = 1000000 
while a >= 10: 
    print a 
    a = a/2 
    c = c + 1 
+0

Danke für Ihre Antwort. Verstehst du nicht, was du dort gemacht hast? Das Hinzufügen von C = 0 und C++ am Ende gab mir einen Synthax-Fehler. –

+0

Ich habe den Code bearbeitet. Sie können c ausdrucken, um herauszufinden, wie oft a halbiert wurde. –

1

Sie haben 2 Möglichkeiten: die empirische Art und Weise und der predictible Weg.

a =1000000 

import math 
print("theorical iterations {}".format(int(math.log2(a//10)+0.5))) 

counter=0 
while a >=10: 
    counter+=1 
    a//=2 

print("real iterations {}".format(counter)) 

ich:

theorical iterations 17 
real iterations 17 

Die experimentelle Methode nur die Iterationen zählt, während die Vorhersageverfahren auf dem abgerundeten beruht (auf obere Schranke) Ergebnis log2 Wert von a (was die Komplexität entspricht der der Algorithmus).

(It obere Schranke abgerundet ist, weil, wenn es mehr als 16 ist, dann müssen Sie 17 Wiederholungen)