这是我编写的一个小函数,用于检查整数是否为素数:
int prime(int x, int y = 2)
{
if(y <= x/2)
{
if((x % y) == 0)
return 0;
}
else
return 1;
return prime(x, ++y);
}
现在,我用 Visual Studio 2012 编译它,如果我给它一个很大的值,比如 105943,就会发生堆栈溢出错误并且代码中断。现在,这个函数不是尾递归吗?如果是这样,那么不应该为递归调用维护堆栈,并且不应该发生溢出?
什么我没有到达这里?