void recursiveFunction(container_t container) {
size_t max = container.size();
...
}
这是我的第一个实现。
void recursiveFunction(container_t container, const size_t max) {
...
}
这是我的第二次实现。
这些函数是递归函数,因此多次调用size()函数或必须添加参数。但是,我不想使用全局变量。 我该怎么办?
ostream& printAnswer(ostream& os, const completeTree_t& completeTree, size_t index) {
size_t left = index * 2;
size_t right = index * 2 + 1;
size_t max = completeTree.size();
if( left < max )
printAnswer(os, completeTree, left);
os << completeTree[index];
if( right < max )
printAnswer(os, completeTree, right);
return os;
}
这是我的完整源代码。
答案 0 :(得分:1)
size
是O(1)。如果您也是,则不要将其作为参数传递。
如果size
在您的容器中不是O(1),那么我建议您重命名该方法,因为它将使您的代码的未来开发人员感到困惑。 然后如果对代码进行性能分析显示它是瓶颈,则将大小显式传递为参数。