Посмотрите на код, который вы написали: ничто в нем не приведет к тому, что ends
окажется где-то около 3745311 в точке, на которую вы претендуете.3745311 + 7490622 - это 11235933, который, деленный на 2, дает нам 5617966, как вы видите.5617966 - 3745311 намного больше 3, поэтому он вычисляет 3745311 + 5617966, что составляет 4681638 - опять же, как вы видите.
Я думаю, возможно, вы хотели использовать ends / 2
вместо (begins + ends) / 2
.Это может привести к 3745311 в точке, которую вы ожидаете.