Ich teste, wenn die Wortnummer die Macht von 2 durch Protokollfunktion ist. Wenn die Wortnummer niedrig ist, füge ich das Wort an '.' bis die Länge zur Potenz von 2 wird. ZB wenn das Wort (W) "abcd" ist, ist len (W) = 4, was 2^2 ist. Die Funktion wird angehalten. Wenn das W 'abcdef' ist, das len (W) = 6, möchte ich das Wort an '.' Anhängen, so dass es 'abcdef' wird. Die neue W-Länge ist 8, was 2^3 ist.Warum hört meine Funktion nicht auf, auch wenn die Bedingung wahr ist?
Bitte überprüfen Sie, wo ich Änderungen vornehmen muss.
import math
def powerOf2(W):
logP = math.log2(len(W))
if isinstance(logP, int):
return W
else:
W.append('.')
powerOf2(W)
Als ich
W = list('abcd')
powerOf2(W)
Das Programm stoppt mit "maximaler Rekursion" laufen. Ich dachte, der Zustand ist wahr. Was scheint ein Problem zu sein?
Arbeitsskript. Ich habe die isinstance Funktion geändert.
import math
def powerOf2(W):
logP = math.log2(len(W))
if (logP).is_integer():
return W
else:
W.append('.')
powerOf2(W)
'log2' keinen int zurückgeben - so Sie rekursiv unendlich oft nennen wollen ... – alfasin
oh..I zu sehen. Vielen Dank. – Kenneth
'2.0' ist kein int. – user2357112