类的成员函数可不可以是递归函数?好纠结
善良超锅锅 2011-11-26 07:39:06 比如我要写一个二叉树的类
遍历二叉树 第一个处理根结点,后处理孩子结点 。如果用递归的话,必须传入指针,第一次传入的是指向根结点的指针,以后传入的是指向孩子结点的指针。不好递归啊
void BiTree::PrintBiTree()
{
pBiTNode p=root; //第一个根结点不好传入,我只能为它另写一个函数了
if(p)Print(p);
}
void BiTree::Print(pBiTNode p) //如果没有上面那个函数,第一次就要传入root指针,而root是类的成员
{ //对用户是不可见的。
if(p!=NULL)cout<<p->data;
if(p->lchild!=NULL||p->rchild!=NULL)
{
cout<<'(';
Print(p->lchild);
cout<<',';
Print(p->rchild);
cout<<')';
}
}
可是如果类中有很多递归成员函数的话,每个递归都要写两个函数,就很麻烦了。而且每个递归都两个函数,用户在调用的时候且不容易弄混淆