新闻  |   论坛  |   博客  |   在线研讨会
SAGEMCOM 252721013AF 使使用递归代替命令式循环
15359029662 | 2023-03-20 18:47:19    阅读:30   发布文章

SAGEMCOM 252721013AF 使使用递归代替命令式循环

SAGEMCOM 252721013AF 使使用递归代替命令式循环

循环函数式语言中的(循环)通常是通过递归递归函数调用它们自己,让操作重复进行,直到它到达基础案例。通常,递归需要维护一个,它消耗的空间与递归深度成线性关系。这可能会使使用递归代替命令式循环变得非常昂贵。然而,一种特殊形式的递归称为尾部递归可以被编译器识别和优化成用于在命令式语言中实现迭代的相同代码。尾部递归优化可以通过将程序转换为连续传球风格在编译期间,在其他方法中。

计划语言标准要求实现支持适当的尾部递归,这意味着它们必须允许无限数量的活动尾部调用。[59][60]适当的尾部递归不仅仅是优化;这是一种语言特性,它向用户保证他们可以使用递归来表达循环,并且这样做对空间是安全的。[61]此外,与它的名字相反,它考虑了所有的尾部调用,而不仅仅是尾部递归。虽然正确的尾部递归通常是通过将代码转换成命令性循环来实现的,但实现可能会以其他方式来实现。举个例子,鸡肉有意维护一个堆栈并让栈溢出。然而,当这种情况发生时,其垃圾收集工将收回空间,[62]允许无限数量的活动尾部调用,即使它没有将尾部递归变成循环


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客