|
|
1
4
就一本好的C编程书而言,我使用了C编程语言。 你说这不是尾递归是正确的。阶乘的典型尾部递归示例是:
我想你的书没有解释尾部递归的目的。尾部递归用于不增加“堆栈深度”。编译器可以用不会增加堆栈深度的“goto”命令替换递归调用。仅当递归的值被直接返回时,才进行编译器修改。您会注意到,在您的示例中,情况并非如此。 |
|
2
2
给定的定义和示例都具有误导性。定义 tail recursion 是:
递归调用不一定要在函数的返回语句或最后一个语句之前。请参见示例:
在这种情况下
在本例中
在给定的示例中,函数在返回之前执行的最后一件事是乘法
因此,它不是尾部递归函数。 尾部递归函数的示例是
其可以由编译器优化以
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |