Нет необходимости передавать два аргумента функции печати. Если вектор нулевой длины, ничего не печатать.
если вектор имеет длину 1, выведите этот элемент.
если вектор имеет длину больше 1, то выведите меньший вектор (рекурсивно), который не содержит последний символ, а затем напечатайте последний символ.
Да, это создаст копию вектора для каждой рекурсии, но я думаю, что для меня это больше похоже на рекурсию. Увеличение указателя на каждом цикле не похоже на рекурсию.
#include <iostream>
#include <vector>
void print(const std::vector<int> vec) {
if (!vec.size())
return;
else {
print(std::vector<int>(vec.begin(), vec.end() - 1));
std::cout << " " << *(vec.end() - 1);
}
}
int main(){
std::vector<int> v{
5, 7, 77, 23, 10, 81
};
print(v);
}