Является ли рекурсией вызов иного метода/функции из данного метода?
В процессе работы над программой, мною был создан генератор объектов, который, помимо прочих параметров, мог принимать в качестве аргумента функцию. Каждый объект, сгенерированный таким конструктором по итогу обладал своей собственной функцией.
Исполняемый код создаёт эти самые объекты. В процессе создания, каждый генерируемый объект, вызывает заложенную в него функцию, а та, в свою очередь, может вызвать любые иные функции.
По итогу возник следующий вопрос: если рекурсия это вызов метода самим собой, то является-ли вызов любой иной функции данным методом рекурсией?
Вопрос возник из-за того, что при использовании рекурсии генерируется и стек рекурсии, который запоминает результаты каждого отдельного вызова рекурсивного метода и, в случае переполнения стека рекурсии, компилятор/интерпретатор прекращает исполнение кода. По сему хотелось бы разобраться, является-ли вызов какого-либо иного метода, текущим методом, рекурсией и возникает-ли что-то подобное стеку рекурсии при вызове методом сторонних методов.
Ответы (1 шт):
Рекурсия - это определение чего-то через само себя. В программировании - это вызов функцией самой себя, также возможна взаимная рекурсия, когда две или более функций вызывают друг друга.
Тут удобно представить последовательность вызовов функций в виде графа: если граф вызовов не содержит циклов (например, если он линеен или может быть представлен в виде дерева), то рекурсии нет.
Судя по описанию вашей проблемы в конце вопроса, я предполагаю, что у вас в коде все-таки возникла рекурсия, возможно из-за какой-то ошибки в коде.