分割故障(核心转储)
问题描述:
我正在写一个C++程序,我运行它后得到这个错误:分割故障(核心转储)
#include<iostream>
using namespace std;
void Step(int dis,int len,int wid, int l=0,int w=0){
if(dis==0)
cout<< l << " "<< w << endl;
Step(dis-wid,len,wid,l,w+1);
Step(dis-len,len,wid,l+1,w);
}
int main(){
Step(10,2,3);
return 0;
}
答
每次调用Step
电话Step
两次,导致堆栈溢出。实际上,由于Step
永远无法到达终点,因此第二次拨打电话Step
从未发生过。
答
Step()
永无止境。在if语句中添加return
,以便函数可以终止。
你忘了问一个问题。如果是“如何调试核心转储”,请告诉我们您喜欢使用哪种调试器。 –
你得到一个核心转储,因为你的递归永远不会停止。您溢出调用堆栈 – StoryTeller
您忘记写入基本条件来中断递归。 – user1438832