Я нашел некоторые объяснения открытой/закрытой рекурсии, но я не понимаю, почему определение содержит слово "рекурсия" или как оно сравнивается с динамической/статической диспетчеризацией. Среди объяснений, которые я нашел, есть:
Открытая рекурсия. Еще одна удобная функция, предлагаемая большинством языки с объектами и классами - это возможность для одного метода тело для вызова другого метода того же объекта через специальный переменная называется
self
или, на некоторых языках,this
. Специальный поведение "я" заключается в том, что оно связано с поздним сроком, что позволяет определить метод в одном классе для вызова другого метода, который определен ниже, в некоторый подкласс первого. [Ральф Хинзе]
... или в Wikipedia:
Семантика отправки
this
, а именно, что этот метод вызывает это, динамически отправляется, называется открытой рекурсией и означает, что эти методы могут быть переопределены производными классами или объектами. Напротив, прямая именная рекурсия или анонимная рекурсия функции использует закрытую рекурсию с ранним связыванием.
Я также прочитал вопрос StackOverflow: Что такое открытая рекурсия?
Но я не понимаю, почему слово "рекурсия" используется для определения. Конечно, это может привести к интересному (или опасному) побочному эффекту, если вы используете "открытую рекурсию", выполнив... метод рекурсивного вызова. Но определения не принимают рекурсивный вызов метода/функции непосредственно во внимание (добавьте "закрытую рекурсию" в определение Википедии, но это звучит странно, поскольку "открытая рекурсия" не относится к рекурсивному вызову).
Вы знаете, почему в определении есть слово "рекурсия" ? Это потому, что оно основано на другом определении компьютерной науки, о котором я не знаю? Должно просто сказать "динамическая отправка" недостаточно?