Я пытался выяснить, почему моя рекурсивная функция не возвращает никаких чисел. vi
- vector<int>
и x
в исходном вызове функции пуст. Все остальное не имеет значения (работает правильно). Что должно произойти: c
возвращается в x
и возвращается x
. Функция работает нормально, если она ничего не возвращает и нажимает c
s в глобальный вектор.Рекурсивная функция, не добавляющая числа
vi generate(const vvi &paths, int index, int start, int end_, int c, vi x)
{
if (start == end_)
{
x.push_back(c);
return x;
}
for(auto path : paths)
{
if(path[0] == start)
{
x = generate(paths, index, path[1], end_, path[index] + c, x);
}
}
return x;
}
Пример:
paths
представляет собой вектор вектора целых чисел. Здесь структура визуализируется
{{1, 2, 1, 0},
{2, 3, 1, 0},
{1, 3, 1, 0}}
Called с generate(paths, 2, 1, 3, 0, x)
. Начало и конец: 1 и 3. C начинается с 0. x - пустой вектор int.
Ожидаемое (уточнить, что-то не пустой, порядок не имеет значения):
{1, 2}
Первый номер от пути 1 до 3, второй номер от пути 1 до 2 и пути 2 до 3.
Просьба указать пример вызова с ожидаемым выходом. – Barry
Ваше редактирование не является примером вызова с ожидаемым выходом. – Barry
Ваш ожидаемый результат зависит полностью от входа функции, которую вы не используете. –