Подсказка: вы можете ожидать хотя бы одного корня в интервале, если
(A) sgn(f(lower_limit) != sgn(f(upper_limit))
Если это условие A верно: вдвое сократить интервал, iaw:
{[min,max]} -> {[min, (max-min)/2] , ](max-min)/2,max]}
и проверьте два подинтервала.
Просто попробуйте на бумаге (используйте график, разделите пополам интерфалы и попытайтесь выяснить, какой интервал является кандидатом на «корневой контейнер»)