我已经创建了一个函数,该函数递归调用自身以向向量添加新元素,直到 vector.size() < 4
和当 vector.size() == 4
函数返回这个具有 4 个元素的修改后的向量时。
但是我不知道如何修改下面的代码以获得相同的结果而不在第一次调用中传递向量(函数应该在第一次调用中创建一个新向量,并在每次调用中添加新元素直到 vector.size() < 4
)
func();
,创建一个向量和push_back(vec.size() + 1)
,向量项:1
func(vec)
,修改传递的向量添加新项,向量项:1, 2
func(vec)
,修改传入的向量添加新项,向量项:1, 2, 3
func(vec)
,修改传入的向量添加新项,向量项:1, 2, 3, 4
1, 2, 3, 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
答案 0 :(得分: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;
}
答案 1 :(得分:1)
你应该这样做:
std::vector<int> func() {
std::vector<int> result;
for (int i = 0; i < 4; ++i)
result.push_back(result.size() + 1);
return result;
}
递归在这里完全不合适。