递归向量 return

Recursive vector return

我已经创建了一个函数,该函数递归调用自身以向向量添加新元素,直到 vector.size() < 4 并且当 vector.size() == 4 函数 returns 这个修改后的向量有 4 个元素。

但是我无法弄清楚如何修改下面的代码以获得相同的结果而不在第一次调用中传递向量(函数应该在第一次调用和每次调用都会添加新元素,直到 vector.size() < 4)

例如:

代码:

#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;
}

输出:

vector items from main: 
1
2
3
4

你可能会:

std::vector<int> func(std::vector<int> vec = {})
{    
    if (vec.size() < 4)
    {
        vec.push_back(vec.size() + 1);        
        vec = func(std::move(vec));    
    }
    return vec;
}

Demo

你应该这样做:

std::vector<int> func() {
    std::vector<int> result;
    for (int i = 0; i < 4; ++i)
        result.push_back(result.size() + 1);
    return result;
}

递归在这里根本不合适。