Ziemlich sicher, dass die Schleife Bedingung n > x
sein soll, so werde ich es in dieser Antwort annehmen.
Zuerst beachten Sie die Werte von x
:
x1 = x0 * x0
= 2 * 2
= 2^2
x2 = x1 * x1
= x0 * x0 * x0 * x0
= 2 * 2 * 2 * 2
= 2^4
x3 = x2 * x2
= x1 * x1 * x1 * x1
= x0 * x0 * x0 * x0 * x0 * x0 * x0 * x0
= 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
= 2^8
Wir sehen, dass der Exponent wächst als 2^t
wo t
die Anzahl der Iterationen in der Schleife ist, so dass wir die geschlossene Form Gleichung für x
erhalten:
x = 2^(2^t)
Dann können wir für die Anzahl der Iterationen lösen t
:
n > x
=> n > 2^(2^t)
=> log(n) > 2^t
=> log(log(n)) > t
wie erforderlich.
Unendlich. Dieser Algorithmus wird niemals beendet, wenn "n" kleiner als 2 ist. Der * Code * andererseits wird je nach Architektur nach 5 oder 6 Iterationen überlaufen. – RBarryYoung
Eigentlich ist es * O (1) * wenn 'n> 0', weil die Anzahl der Operationen, die benötigt werden um 'x' zu überfließen, unabhängig von' n' ist. – user3386109
Sollte es nicht 'x
harold