1
4
就一本好的C编程书而言,我使用了C编程语言。 你说这不是尾递归是正确的。阶乘的典型尾部递归示例是:
我想你的书没有解释尾部递归的目的。尾部递归用于不增加“堆栈深度”。编译器可以用不会增加堆栈深度的“goto”命令替换递归调用。仅当递归的值被直接返回时,才进行编译器修改。您会注意到,在您的示例中,情况并非如此。 |
2
2
给定的定义和示例都具有误导性。定义 tail recursion 是:
递归调用不一定要在函数的返回语句或最后一个语句之前。请参见示例:
在这种情况下
在本例中
在给定的示例中,函数在返回之前执行的最后一件事是乘法
因此,它不是尾部递归函数。 尾部递归函数的示例是
其可以由编译器优化以
|
Luiz Miranda · 尾递归pow-Erlang 7 年前 |
Srinivas · Scala中的尾部递归 7 年前 |
madtyn · Python:有可能使这个尾部递归阶乘更快吗? 7 年前 |
clay · Scala中的尾部递归findNextAndTail 7 年前 |
Sanitiy · 如何在调用另一个函数后强制函数退出? 7 年前 |
Lorinc Nyitrai · Lua-将协程递归重写为尾部调用递归 7 年前 |
Alex · 尾部递归调用(C primer加上书本示例) 9 年前 |
Thomas Ahle · 递归联合查找是否可以优化? 9 年前 |
beta Rob · 这个函数真的是尾部递归的吗? 11 年前 |