我找到了一些关于打开/关闭递归的解释,但我不明白为什么定义包含“递归”这个词,或者它如何与动态/静态调度进行比较。在我找到的解释中,有:
开放递归。大多数带有对象和类的语言提供的另一个方便的特性是,一个方法体能够通过一个特殊的变量调用同一对象的另一个方法,
self
或者,在某些语言中,this
. self 的特殊行为是它是后期绑定的,允许在一个类中定义的方法调用稍后在第一个子类中定义的另一个方法。[拉尔夫欣策]
...或在维基百科中:
的调度语义
this
,即对 this 的方法调用是动态调度的,称为开放递归,意味着这些方法可以被派生类或对象覆盖。相比之下,函数的直接命名递归或匿名递归使用封闭递归,具有早期绑定。
我还阅读了 StackOverflow 问题:什么是开放递归?
但我不明白为什么要用“递归”这个词来定义。当然,如果一个人通过执行“开放递归”来使用......方法递归调用,它可能会导致有趣(或危险)的副作用。但是这些定义没有直接考虑方法/函数递归调用(在维基百科定义中加上“封闭递归”,但这听起来很奇怪,因为“开放递归”并不指递归调用)。
你知道为什么定义中有“递归”这个词吗?是因为它基于另一个我不知道的计算机科学定义吗?仅仅说“动态调度”还不够吗?