Я пытаюсь извлечь максимальный элемент из вектора в c ++, используя рекурсию только с одним параметром в функции:
int maxR(vector<int> v) {
if (v.size() != 1) {
if (v[v.size()-1] > v[v.size()-2]) {
v[v.size()-2] = v[v.size()-1];
v.pop_back();
/*check what happens to v during recursion: cout << v[v.size()-1] <<endl;*/
return maxR(v);
}
else {
v.pop_back();
return maxR(v);
}
return v[0];
}
}
int main() {
vector<int> v = { 3,16,2,4,7,11,19 };
cout << maxR(v);
}
Так что я надеялся, что он вернет число 19, но по некоторым причинам, он возвращает мне ноль, т. е. 0.
Поэтому я добавил строку:
cout << v[v.size()-1] <<endl;
, чтобы увидеть, что происходит во время рекурсии, и я получил это: 19 19 19 19 19 19 0
Так что я не уверен, что не так с моим кодом?
Может кто-то укажет на ошибку?