关于Tail递归优化

时间:2013-01-12 16:19:07

标签: c++ optimization recursion tail

我使用以下两个函数来测试MSVC08下的Tail递归优化

int TailRecursively1(int i)
{
  return TailRecursively1(i);
}

int TailRecursively2(std::string str)
{
  return TailRecursively2(str);
}

为什么TailRecursively1已经优化,但是TailRecursively2导致堆栈溢出?

1 个答案:

答案 0 :(得分:5)

因为在将str参数按值发送到TailReucrsively2时会调用std :: string复制构造函数和析构函数吗?

(我不是100%肯定这个)