说有一个函数可以计算阶乘(n)

Factorial(7)是否为1到7中的每个n创建7个函数对象

并在必要时使用这些值(对于factorial(8)就像factorial(7)* 8一样)

最佳答案

这取决于语言和语言实现。

在许多函数式语言(例如Haskell)中,保证函数什么都不会改变。只返回一个值。由于没有副作用,因此该语言可以记住/缓存或“记住”函数调用的结果。

用不太复杂的语言,可以将7个不同的函数调用帧放在堆栈上并弹出。

在许多功能语言中正确编写的阶乘函数也将是尾递归。在这种情况下,语言可能会选择从函数底部跳到顶部,以避免创建另一个函数调用。在这种情况下,该语言将递归函数变成“免费”循环。

关于factorial - 阶乘如何计算?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/633403/

10-13 05:48