Итак, я довольно новичок в C ++ и пытаюсь сгенерировать числа Фибоначчи, используя рекурсию, верно? За исключением случаев, когда я пытаюсь индексировать до следующего значения, мне нужно увеличить индекс, и функция не позволит мне его увеличить.
Насколько я знаю, я запустил его в режиме отладки и перешагнул через функцию - она постоянно зацикливается внутри функции fibGen, и у меня остается постоянное значение 1 (когда я вызываю fibGen в моей основной функции, параметры являются (начальныйSeq, 1, 13), где начальныйSeq является другим вектором со значениями {1,1}
Код прекрасно собирается и компилируется, но когда я его запускаю, я получаю ошибку выделения памяти, которая вызвана бесконечным циклом.
Что я сделал не так? Почему «я» не увеличивается?
Я пытался увеличить i, имея i ++ внутри рекурсивного вызова fibGen (в операторе else), я пытался использовать i ++ вне вызова функции, и я попробовал то, что сейчас там, где у меня есть i + = 1, а затем пропустите i.
Также у меня изначально не было «return fibSeq» внизу, потому что его не имеет смысла, но я вставил его, потому что vscode не будет компилироваться без него, говоря, что это может никогда не доходить до конца fibGen (что имеет смысл сейчас, и когда эта проблема будет исправлена, я думаю, что ее можно удалить, но на данный момент она просто существует, так что программа будет компилироваться)
std::vector<int> fibGen(std::vector<int> fibSeq, int i, int max){
if(fibSeq[i] >= max){
return fibSeq;
}else{
fibSeq.push_back(fibSeq[i] + fibSeq[i-1]);
i+=1;
fibGen(fibSeq, i, max);
}
return fibSeq;
}
На выходе должен быть вектор, содержащий последовательность Фибоначчи, и я получаю ошибку mem alloc (описанную выше)