【发布时间】:2015-08-07 02:36:06
【问题描述】:
...尾调用是作为过程的最终操作执行的子例程调用。如果尾调用可能导致同一子例程在调用链的后面再次被调用,则称该子例程是尾递归的,这是递归的一种特殊情况。
现在我用 C 编写了以下例程
int foo (int x){
if ( x > 100)
return x-10;
else
return foo(foo(x+11));
}
根据上面的定义,在我看来 foo 应该是一个尾递归函数,因为它递归调用是过程的最后一个动作,但是我曾经在某处读到这不是尾递归函数。
因此问题:
为什么这个函数不是尾递归的?
【问题讨论】: