Так что для моей лаборатории я пытаюсь найти самую длинную последовательность чисел в данном векторе. Например,
, если бы числа, которые у вас были, были [5, 15, 16, 4, 8, 9, 10]
, самая длинная увеличивающаяся подпоследовательность была бы 4 часть 4, 8, 9, 10
. Я должен быть в состоянии найти это без использования циклов и рекурсии, и я дошел до этого далеко, но я не могу понять, как хранить переменную для самой длинной последовательности, а также иметь переменную для временной самой длинной последовательности, он просто должен возвращать целочисленное значение длины последовательности, а не самой последовательности. Спасибо, и любая помощь или критические замечания приветствуются!
int increasing_sequence_recursive(std::vector<int> &numbers, int startIdx) {
if (startIdx == numbers.size()) {
return '/0';
} else if (numbers[startIdx] < numbers[startIdx + 1]) {
int tempSeq = 1 + increasing_sequence_recursive(numbers, startIdx + 1);
return tempSeq;
}
return increasing_sequence_recursive(numbers, startIdx + 1);
}
РЕДАКТИРОВАТЬ:
'''
int maxTemp(std::vector<int> &numbers, int startIdx, int maxSoFar) {
if (startIdx == numbers.size()) {
return maxSoFar;
} else if (numbers[startIdx] < numbers[startIdx + 1]) {
int temp = 1 + maxTemp(numbers, startIdx + 1, maxSoFar);
if (temp > maxSoFar) {
maxSoFar = temp;
}
temp = 1;
} else {
return maxTemp(numbers, startIdx + 1, maxSoFar);
}
}
'''
Я создал эту вспомогательную функцию для выполнения основной рекурсии, но по какой-то причине временное значение никогда не сбрасывается таким образом, значение - это в основном добавленная длина обеих последовательностей.