关于递归和向量的快速问题
Quick question on Recursion and vectors
我如何能够创建一个递归函数,该函数应接受其参数作为整数向量。
几乎我需要添加所有输入的偶数,而减去所有奇数,我将如何做到这一点?
你试图以错误的方式解决问题。 首先,迭代解决方案在这里比递归解决方案简单得多(并且更有意义)。 但是,如果您确实需要递归解决方案,则采用一对迭代器的函数更有意义:
template <typename ForwardIterator>
typename std::iterator_traits<ForwardIterator>::value_type
do_math_stuff(ForwardIterator first, ForwardIterator last)
{
if (first == last)
return 0;
return (*first % 2)
? (*first + do_math_stuff(std::next(first), last))
: (*first - do_math_stuff(std::next(first), last));
}
int main()
{
std::array<int, 8> x = { 1, 2, 3, 4, 5, 6, 7, 8 };
int result = do_math_stuff(x.begin(), x.end());
}
如果你编写一个将整个容器作为参数的函数,你必须为函数的每个递归调用创建一个全新的容器,这太愚蠢了。 通过让函数将迭代器引入容器,您不仅允许该函数与任何向前可迭代范围一起使用,而且还不再需要创建容器的任何副本。
算法应该根据迭代器而不是容器来实现。
相关文章:
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- 添加存储在向量中的大整数的函数出现问题
- C++ 继承向量问题(无限循环+在其他类中使用向量的问题)
- SWIG c++到python:向量问题
- 向量问题,如何删除向量中的数组?
- 向量问题,也许有点手
- ndk中的标准与cpp向量问题
- 从数据文件到多维向量问题
- C++:向量问题的向量
- 类向量 c++ 问题
- 特征向量问题
- C++std::向量问题
- 结构中的向量问题
- C++类向量问题
- 向量的向量问题
- 获取索引和元素-向量问题
- 搜索或发现向量问题内部
- C++向量问题;通过引用传递内容
- 几个c++向量问题
- 指向包含向量问题的实例类的指针<int>