除了这段代码效率低下之外,我在这里编写递归函数的方式是否被认为是“好风格”。例如,我正在做的事情是创建一个包装器,然后将它传递给int mid
和一个计数器int count
。
这段代码所做的是从数组中获取值,然后查看它blockIndex
是否大于mid
. 那么,除了效率低下,我会得到一份编写这样的递归函数的工作吗?
int NumCriticalVotes :: CountCriticalVotesWrapper(Vector<int> & blocks, int blockIndex)
{
int indexValue = blocks.get(blockIndex);
blocks.remove(blockIndex);
int mid = 9;
return CountCriticalVotes(blocks, indexValue, mid, 0);
}
int NumCriticalVotes :: CountCriticalVotes(Vector<int> & blocks, int blockIndex, int mid, int counter)
{
if (blocks.isEmpty())
{
return counter;
}
if (blockIndex + blocks.get(0) >= mid)
{
counter += 1;
}
Vector<int> rest = blocks;
rest.remove(0);
return CountCriticalVotes(rest, blockIndex, mid, counter);
}