我似乎无法弄清楚为什么这是Python中的一个无限循环?
for i in range(n):
j=1
while((i*j)<n):
j+=1
外层循环应该执行n次,每次将j增加n除以i的值,直到j等于n div i为止。
我似乎无法弄清楚为什么这是Python中的一个无限循环?
for i in range(n):
j=1
while((i*j)<n):
j+=1
外层循环应该执行n次,每次将j增加n除以i的值,直到j等于n div i为止。
print
语句来证明跟踪正确。i
从零开始,因此内部循环的条件始终为0*j < n
,这将始终为真。
i
中的第一个值将为 0。0 乘以任何数都是 0。
因为i等于0!所以i*j等于0。
range(n)
从0
开始,而非1
。 0 * j
总是小于n
。
在外层循环的第一次迭代中,内层循环变成一个无限循环。之后发生什么都没有关系。不存在“无限之后”。
i 是 0,重写你的循环
for i in range(1,n):
j=1
while((i*j)<n):
j+=1
使用这个版本的range函数将创建一个从1开始而不是0的范围