递归中的参数是如何变化的?
如下是一个求哈夫曼树编码的算法,len的值是如何变化的呢?
void HuffManCoding(struct BTreeNode* FBT,int len)//len初始值为0
{
static int a[10];//定义静态数组a,保存每个叶子的编码,数组长度至少是树深度减1
if(FBT!=NULL)
{
if(FBT->left==NULL&&FBT->right==NULL)
{
int i;
printf("结点权值为%d的编码:",FBT->data);
for(i=0;i<len;i++)
{
printf("%d",a[i]);
printf("\n");
}
}
else
{
a[len]=0;
HuffManCoding(FBT->left,len+1);
a[len]=1;
HuffManCoding(FBT->right,len+1);
}
}
}