@kernel_Pan1c

Ошибка сегментирования (стек памяти сброшен на диск) c++. Как исправить?

Ошибка в этом фрагменте кода. Никак не могу понять, в чем дело
Сама программа должна возвращать двоичную последовательность длины n

#include <iostream>
#include <vector>

using namespace std;

void func(int a, vector<int>& v1){
	if(a == v1.size()){
		for(int i = 0; i < v1.size(); ++i){
			cout << v1[i];
		}
		cout << endl;
		return;
	}
		for(int i = 0; i < v1.size(); ++i){
			v1[a] = i;
			func(i + 1, v1);
		}
	
}

int main(){
	int n;
	cin >> n;
	vector<int> v;
	for(int i = 0; i < n; ++i){
		v.push_back(0);
	}
	for(int i = 0; i < n; ++i){
		cout << v[i];
	}
	func(1, v);
	return 0;
}
  • Вопрос задан
  • 1352 просмотра
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Ваша программа бесконечно уходит в рекурсию, у нее кончаетсся память и она падает. func(1, v) в цикле при i=0 вызовет func(1,v1), которая опять же вызовет func(1,v1), которая опять же... И так пока программе не поплохеет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы