def bounce(m, n):
vm = 0; vn = 1.0
times = 0
while vn > vm:
vm_ = (m-n)/(m+n) * vm + (2*n)/(m+n) * vn
vn = (2*m)/(m+n) * vm + (n-m)/(m+n) * vn
if (vm_ <= 0 and vm_ > vn):
times +=1; break
vm = -vm_
times += 2
return times
for i in [pow(100, x) for x in range(5)]:
print( bounce(1, i) )
输出:
3
31
314
3141
31415