这个算法的递归实质是什么?急!!!

来源:百度知道 编辑:UC知道 时间:2024/05/24 12:27:32
void process(int pos,int path[],int curp)//当前处理位置pos的元素
{
int m,i;
if(pos<n)
{
push(pos+1);
process(pos+1,path,curp);
pop();
}
if(!Emptys())
{
m=pop();
path[curp]=m;
curp++;
process(pos,path,curp);
push(m);
}
if(pos==n&&Emptys())
{
for(i=0;i<curp;i++)
printf("%2d",path[i]);
printf("\n");
}
}

详细解释下前2个if的每句含义和这个算法的过程。
尤其是这个push(m);

为什么不是push(pos+1);?

void Initstack()
{
s.top=-1;
}
void push(int q)//元素n进栈
{
s.top++;
s.data[s.top]=q;
}
int pop()//出栈
{
int temp;
temp=s.data[s.top];
s.top--;
return temp;
}

代码不全
invalid function pop()
invalid function push()
invalid function Emptys()

程序不全,请写出pop(),push()Emptys()等函数的定义

...实在看不出这个是做什么的..

代码不全啊,main()里面是怎么写的?递归的第一步是怎么调用的?