说有一个计算阶乘(n)的函数
阶乘(7)是否为从1到7的n中的每一个创建7个函数对象
并在必要时使用这些值(对于阶乘(8),如阶乘(7)* 8)
这取决于语言和语言实现。
在许多函数式语言(例如 Haskell)中,函数保证不会改变任何内容;只是为了返回一个值。由于没有副作用,语言可以记住/缓存或“记忆”函数调用的结果。
在不太复杂的语言中,可能会将 7 个不同的函数调用帧放置在堆栈上并弹出。
在许多函数语言中正确编写的阶乘函数也是尾递归的;在这种情况下,语言可能会选择简单地从函数底部跳转到顶部,以避免创建另一个函数调用。在这种情况下,语言将递归函数“免费”转变为循环。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)