int j=0,k=0,maxi=0,val=0; //而不能在此处定义
void build(int al,int ar,int bl,int br,int d) //建树递归函数 d表示所在层数
{
if(al>ar)return;
val=a[ar];
k=dl[d];
vect[d][k]=val;
dl[d]++;
int mid=p[val]; /*********请注意一定要在函数内定义mid,因为两次子树的递归里,第一次递归会改变第二次递归的mid!!*/
if(d>maxi)maxi=d;
build(al,al+mid-bl-1,bl,mid-1,d+1);
build(al+mid-bl,ar-1,mid+1,br,d+1);
}
递归函数中需要注意的定义参数问题
最新推荐文章于 2024-08-26 21:46:59 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)