0
単語番号がログ機能によって2の累乗であるかどうかをテストしています。単語の数が少ない場合は、「。」で単語を追加します。例えば、単語(W)が 'abcd'の場合、len(W)= 4、つまり2^2です。この機能は停止します。 Wが 'abcdef'、len(W)= 6ならば、 '。'で単語を追加したいので、 'abcdef ..'になります。新しいWの長さは8で2^3です。条件がTrueであっても私の関数が停止しないのはなぜですか?
変更が必要な箇所を確認してください。
import math
def powerOf2(W):
logP = math.log2(len(W))
if isinstance(logP, int):
return W
else:
W.append('.')
powerOf2(W)
私は
W = list('abcd')
powerOf2(W)
を実行すると、プログラムが "最大の再帰" で停止します。私は条件が本当だと思った。何が問題だと思われますか?
作業スクリプト。 isinstance関数を変更しました。
あなたは再帰を返す必要がimport math
def powerOf2(W):
logP = math.log2(len(W))
if (logP).is_integer():
return W
else:
W.append('.')
powerOf2(W)
'log2'がintを返さない - あなたは何回再帰的に無限の番号に電話しますので... – alfasin
oh..Iを参照してください。ありがとうございました。 – Kenneth
'2.0'はintではありません。 – user2357112