Предотвращайте бесконечную рекурсию с помощью счетчиков безопасности
Если вы используете рекурсию, рекомендуется добавить счетчики безопасности, дабы избежать бесконечной рекурсии. Счетчиком должна быть такая переменная, которая не будет создаваться при каждом вызове метода. Используйте переменную член класса или передавайте счетчик безопасности в виде параметра.