なぜこれがPythonの無限ループなのか理解できないようですが??
for i in range(n):
j=1
while((i*j)<n):
j+=1
外側のループはn回行くべきではありません。毎回ndiviに等しくなるまでjをインクリメントしますか?
なぜこれがPythonの無限ループなのか理解できないようですが??
for i in range(n):
j=1
while((i*j)<n):
j+=1
外側のループはn回行くべきではありません。毎回ndiviに等しくなるまでjをインクリメントしますか?
i
で始まる0
ため、while
条件は常にtrueのままです。詳細については、範囲のドキュメントを参照してください。
変数の状態変化を示す「トレース」を作成できます。
等
print
ステートメントを挿入することで、トレースが正しいことを証明できます。
疑わしい場合は、印刷してください。
i
ゼロから始まるため、内部ループの条件は常に0*j < n
、であり、これは常に真になります。
の初期値i
が0であるため。
の最初の値は0にi
なります。0×何でも0です。
私は0だから!! およびi*j = 0
range(n)
0
ではなく、で始まり1
ます。0 * j
常に未満になりn
ます。
初めて外側のループを通過すると、内側のループは無限ループになります。その後何が起こっても構いません。「無限の後」はありません。
私は0ですあなたのループを書き直します
for i in range(1,n):
j=1
while((i*j)<n):
j+=1
このバージョンの範囲関数を使用すると、0ではなく1から始まる範囲が作成されます