说有一个计算阶乘(n)的函数
factorial(7)是否为1到7中的每一个创建了7个函数对象
并在必要时使用这些值(对于阶乘(8)像阶乘(7)*8)
这取决于语言和语言实现.
在许多函数式语言(例如Haskell)中,保证函数不会改变任何东西; 只返回一个值.缺乏副作用使语言能够记住/缓存或"记忆"函数调用的结果.
在一种不太复杂的语言中,可能会在堆栈上放置7个不同的函数调用框并弹出.
在许多函数语言中正确编写的因子函数也将是尾递归的; 在这种情况下,语言可能会选择简单地从函数的底部跳转到顶部以避免创建另一个函数调用.在这种情况下,语言将递归函数转换为"免费"循环.