c++ - 递归:使用传入参数的值

标签 c++ recursion

我得到了这行代码,它弹出数组的一个整数,将其保存到 int element,然后将其从数组中删除。然后在 return 语句 return CountCriticalVotes(rest, blockIndex + element); 中将它添加到 blockIndex 变量中,如果它在数组为空之前达到 10,则返回 1。但我的问题是,我不希望它把参数数组中的所有值加起来,而是只加一个然后将参数值恢复到原来的状态,然后添加一个新的,恢复等。 . 我该怎么做?

int NumCriticalVotes :: CountCriticalVotes(Vector<int> & blocks, int blockIndex)
{
    if (blockIndex >= 10)
    {
        return 1;
    }
    if (blocks.isEmpty())
    {
        return 0;


    } else {

        int element = blocks.get(0);
        Vector<int> rest = blocks;
        rest.remove(0);
        return  CountCriticalVotes(rest, blockIndex + element);

最佳答案

递归地做(顺便说一句,效率很低。没有理由这样做):

bool NumCriticalVotes :: CountCriticalVotes(Vector<int> const& blocks,
                                            int blockIndex,
                                            size_t current = 0)
{
    // check if we reach the end of the vector
    if (current == block.size())
    {
        return true;
    }

    int sum = blockIndex+block.get(current);

    if (sum >= 10)
    {
        return true;
    }

    return  CountCriticalVotes(blocks, blockIndex, current+1);
}

关于c++ - 递归:使用传入参数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13813930/

相关文章:

c++ - C++中的矩阵相邻元素组合

recursion - 在 Elixir 中使用模式匹配和递归拆分列表

c++ - 将二维数组传递给函数

c++ - 堆栈、高速缓存未命中和虚拟内存

java - 平衡二叉搜索树

java - 计算java中的递归步骤

c++ - 这段代码有什么作用? (C++,类和数组)

c++ - 为什么 std::mutex 在 OSX 上这么慢?

c++ - 为什么 C++ 字符串需要 a\0?

java - 递归语句中声明的变量是创建新变量还是刷新原始变量?