c++ - 递归向量返回
问题描述
我已经创建了一个函数,该函数递归调用自身以向向量添加新元素,直到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
解决方案
你可能会这样做:
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;
}
推荐阅读
- python - LogisticRegression 为不同的 C 值返回相同的模型
- python - 从列表中抽取指定数量的样本。使用所有列表元素
- python - 为什么我收到文件或目录未找到的错误,尽管两者都存在于谷歌驱动器和 Colab Notebooks 中?
- javascript - 如何通过在javascript中引用数组来设置内容
- c++ - 使用路径目录时 \\ 和 / 之间的区别
- security - 保护程序的堆栈内存
- django - 登录后如何禁用浏览器后退按钮?
- scala - 为什么坚持方法永远行不通?
- android - 如何从不同的函数发出值,但将它们全部收集在一个地方?流科特林
- apache-kafka - 我应该如何在我的设置中设置 Kafka 分区与主题