【发布时间】:2014-05-03 00:37:22
【问题描述】:
当函数声明为静态成员函数(而不是普通成员函数)时,递归函数是否更快。例如这样的:
class Tree {
Node* p;
public:
static int height(Node* n){
.......
int lh = height(n->left);
int rh = height(n->right);
......
}
};
这可能是什么原因?
【问题讨论】:
-
了解此类事情的最佳方法是先为自己编写一个测试并查看。
-
您真的必须向我们展示您的替代代码是什么。但它不太可能在现代编译器中产生巨大的影响......
-
我并不是很关心速度上的差异,但我只是想知道发生这种情况的可能原因。
-
同时考虑:
int height() const { return p->height(); }并将height作为Node的(递归)成员函数。
标签: c++ class recursion static member-functions