这被认为是尾巴召唤?

时间:2014-01-23 03:01:31

标签: c++

我知道递归尾调用是函数将自己称为最后一个动作。即使函数调用不在最后一行,以下内容也会被视为尾调用。

void test(int a)
{
    if(a == 1)
       return;
    else if(a % 2 == 0)
       test(a / 2);
    else
       test(3 * a - 1);
}

说一个是偶数。调用test(a / 2)会被视为尾调用吗?

1 个答案:

答案 0 :(得分:2)

是的,不是说它在C ++中意义重大。 C ++不需要删除尾调用;编译器有时可以做到,但它们通常不会。你不能像在Scheme中那样依赖它。