我知道递归尾调用是函数将自己称为最后一个动作。即使函数调用不在最后一行,以下内容也会被视为尾调用。
void test(int a)
{
if(a == 1)
return;
else if(a % 2 == 0)
test(a / 2);
else
test(3 * a - 1);
}
说一个是偶数。调用test(a / 2)会被视为尾调用吗?
答案 0 :(得分:2)
是的,不是说它在C ++中意义重大。 C ++不需要删除尾调用;编译器有时可以做到,但它们通常不会。你不能像在Scheme中那样依赖它。