2016-12-29 110 views
-7

我正在寫一個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

回答

3

每次調用Step電話Step兩次,導致堆棧溢出。實際上,由於Step永遠無法到達終點,因此第二次撥打電話Step從未發生過。

2

Step()永無止境。在if語句中添加return,以便函數可以終止。