Алина Козыренко @akozyrenko
Java Developer
Информация
- В рейтинге
- 524-я
- Откуда
- Москва, Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирована
- Активность
Специализация
Backend Developer
Lead
Java
Spring Boot
Hibernate
SQL
PostgreSQL
REST
Apache Kafka
Apache Maven
Elasticsearch
Kubernetes
А как вы определили 46340 на этапе, когда мы записываем значение right, без использования встроенных функций?
ну, можете прогнать кейс с х = 2^31-1:), mid*mid вылетит за пределы int:)
По условию задачи заданное число может быть в пределах отрезка от 0 до 2 в 31 степени - 1, поэтому mid выйдет за пределы при использовании умножения.
Спасибо за фидбек.
Согласна, что этот момент стоило бы расписать подробнее. Возьму на заметку для следующих статей.
Если вы сделаете left = 0, то словите ArithmeticException для х от 0 до 3 включительно
зачем определять 4 таких случая, загрязняя код, если все, кроме того, что обозначено с 0, и так отсеется на первом шаге цикла. Мы ничего не выиграем по скорости, а лишь только накрутим код.
Нельзя, потому что если х = 1, в ответе вы получите 0, что неверно.
Массива тут как таковой неочевиден, но фактически он есть. Ведь числа, которыми мы огибаем границы, как раз выстраиваются в упорядоченный массив (от 1 до Х)
С остальными замечаниями согласна, поправила/добавила:)
на мой взгляд, рекурсия гораздо понятнее, если в ней разобраться
Но тут, кому что нравится)
Про непрямую и косвенную рекурсию не было плана рассказывать в этой статье:)
По поводу головной и хвостовой - обсуждали в комментарии выше: оба примера, действительно являются головной рекурсией, в статье скорректировала.
Да, спасибо. В обоих случаях, действительно, используется головная рекурсия, поправила
Насчет использования цикла: в случае с факториалом, согласна, но здесь пример просто для базового понимания работы рекурсии приведен.
А вот в случае решения задачи с ListNode - мне кажется, код без рекурсии, будет довольно громоздким и сложным.
Да, спасибо, действительно ошибка, поправила