I already created a function which recursive calling itself to add new elements to vector until vector.size() < 4
and when vector.size() == 4
function returns this modified vector with 4 elements.
However I'm can't figure it out how to modify the code below to get the same result without passing a vector in first call (function should create a new vector in first call and in each next call add new element until vector.size() < 4
)
For instance:
- first call
func();
, create a vector and push_back(vec.size() + 1)
, vector items: 1
- second call
func(vec)
, modify passed vector adding new item, vector items: 1, 2
- third call
func(vec)
, modify passed vector adding new item, vector items: 1, 2, 3
- fourth call
func(vec)
, modify passed vector adding new item, vector items: 1, 2, 3, 4
- return created vector with items:
1, 2, 3, 4
in first call
Code:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<int> func (vector<int>& vec)
{
if (vec.size() < 4)
{
vec.push_back((vec.size() + 1));
func(vec);
}
return vec;
}
int main()
{
vector <int> v;
vector <int> my_vector = func(v);
cout << "vector items from main: " << endl;
for (auto &i : my_vector)
cout << i << endl;
}
Output:
vector items from main:
1
2
3
4
question from:
https://stackoverflow.com/questions/65864801/recursive-vector-return 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…