Самая длинная увеличивающаяся подпоследовательность в векторе с использованием рекурсии? - PullRequest
0 голосов
/ 13 февраля 2020

Так что для моей лаборатории я пытаюсь найти самую длинную последовательность чисел в данном векторе. Например,

, если бы числа, которые у вас были, были [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);
    }
}
'''

Я создал эту вспомогательную функцию для выполнения основной рекурсии, но по какой-то причине временное значение никогда не сбрасывается таким образом, значение - это в основном добавленная длина обеих последовательностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...