2016-12-29 5 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() никогда не заканчивается. Добавьте return в оператор if, чтобы функция могла завершиться.

Смежные вопросы