分割故障(核心转储)

问题描述:

我正在写一个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; 
} 
+2

你忘了问一个问题。如果是“如何调试核心转储”,请告诉我们您喜欢使用哪种调试器。 –

+1

你得到一个核心转储,因为你的递归永远不会停止。您溢出调用堆栈 – StoryTeller

+2

您忘记写入基本条件来中断递归。 – user1438832

每次调用Step电话Step两次,导致堆栈溢出。实际上,由于Step永远无法到达终点,因此第二次拨打电话Step从未发生过。

Step()永无止境。在if语句中添加return,以便函数可以终止。