オープン/クローズド再帰の説明をいくつか見つけましたが、定義に「再帰」という言葉が含まれている理由や、動的/静的ディスパッチとの比較がわかりません。私が見つけた説明の中には、次のようなものがあります。
再帰を開く。オブジェクトとクラスを持つほとんどの言語で提供されるもう 1 つの便利な機能は、1 つのメソッド本体が、
self
または一部の言語ではthis
. self の特別な動作は、遅延バインドされていることです。これにより、あるクラスで定義されたメソッドが、最初のクラスのサブクラスで後で定義された別のメソッドを呼び出すことができます。[ラルフ・ヒンツェ]
...またはウィキペディアで:
のディスパッチ セマンティクス
this
、つまり this のメソッド呼び出しが動的にディスパッチされることは、オープン再帰と呼ばれ、派生クラスまたはオブジェクトによってこれらのメソッドをオーバーライドできることを意味します。対照的に、関数の直接の名前付き再帰または匿名再帰は、クローズド再帰を早期バインディングと共に使用します。
また、StackOverflow の質問:オープン再帰とは何ですか?も読みました。
しかし、定義に「再帰」という言葉が使われている理由がわかりません。もちろん、メソッドの再帰呼び出しを行うことで「オープン再帰」を使用すると、興味深い (または危険な) 副作用が発生する可能性があります。しかし、定義はメソッド/関数の再帰呼び出しを直接考慮していません (ウィキペディアの定義の「閉じた再帰」を除いて、「開いた再帰」は再帰呼び出しを参照していないため、奇妙に聞こえます)。
定義に「再帰」という言葉がある理由を知っていますか? 私が認識していない別のコンピューター サイエンスの定義に基づいているためですか? 単に「動的ディスパッチ」と言うだけでは不十分ですか?