我使用以下两个函数来测试MSVC08下的Tail递归优化
int TailRecursively1(int i)
{
return TailRecursively1(i);
}
int TailRecursively2(std::string str)
{
return TailRecursively2(str);
}
为什么TailRecursively1已经优化,但是TailRecursively2导致堆栈溢出?
答案 0 :(得分:5)
因为在将str参数按值发送到TailReucrsively2时会调用std :: string复制构造函数和析构函数吗?
(我不是100%肯定这个)