"exited, segmentation fault"



在下面的代码中,我们有一个错误:;退出,分段故障";当我尝试输入x的整数时。

如果x被声明为全局变量,为什么会发生这种情况?

#include <iostream>
using namespace std;
int x;
int a(int &x)
{
int y = x--;
int z = x - 2;
if (y == 0)
{
return (5*4-6*a(z));
}else if (z == 0)
{
return (5*a(y)-6*4);
}else if (y == 1)
{
return (5*9-6*a(z));
}else if (z == 1)
{
return (5*a(y)-6*9);
}else{
return (5*(a(y))-6*(a(z)));
}
}
int main() 
{
cout << "Enter an integer value for x: ";
cin >> x; 
a(x);
return 0;
}

函数a的所有执行路径都调用函数a,因此您正在执行无限递归

if (y == 0)
{
return (5*4-6*a(z)); // a is called here
}else if (z == 0)
{
return (5*a(y)-6*4); // a is called here
}else if (y == 1)
{
return (5*9-6*a(z)); // a is called here
}else if (z == 1)
{
return (5*a(y)-6*9); // a is called here
}else{
return (5*(a(y))-6*(a(z))); // a is called here
}

无限递归可能会使用堆栈并导致分段故障。(这可能不会导致:例如,当尾调用优化完成时(

相关内容

  • 没有找到相关文章

最新更新