x = int(input())
low, high, ans = 0, x, -1
while low <= high:
mid = (low + high) // 2
if mid * mid <= x:
ans = mid
low = mid + 1
else:
high = mid - 1
print(ans)
请问第四行low+high,low既然是0,为什么不可以省略,我试了下,省略后电脑死循环。什么原理?
x = int(input())
low, high, ans = 0, x, -1
while low <= high:
mid = (low + high) // 2
if mid * mid <= x:
ans = mid
low = mid + 1
else:
high = mid - 1
print(ans)
请问第四行low+high,low既然是0,为什么不可以省略,我试了下,省略后电脑死循环。什么原理?
low的初始值为0,不代表一直为0
删掉之后mid会一直为high//2,low一直为high//2+1
循环条件high//2 + 1 <=high,只要high大于等于2就一直循环