编译出错,是什么原因?
cslxc 2004-10-26 11:54:46 void display(int a[], int flag[], int n, unsigned int no = 0) {
int i, bflag = 0;
if(no > 0)
printf("%4d : ", no);
else
printf(" : ");
for(i = 0; i < n; ++i) {
if(flag[i]) {
if(bflag)
printf(" + ");
else
++bflag;
printf("%d", a[i]);
}
}
printf("\n");
}
int test(int a[], int flag[], int n, int m, int level = 0) {
static target = 0;
int Counter = 0;
if(level >= n || level < 0) return Counter;
if(!level) target = m;
if(a[level] < m) {
flag[level] = 1;
Counter += test(a, flag, n, m - a[level], level + 1);
} else if(a[level] = m) {
flag[level] = 1;
++Counter;
display(a, flag, level + 1, Counter);
} else {
flag[level] = 0;
Counter += test(a, flag, n, m, level + 1);
}
return Counter;
}
void main(void) {
int a[] = { 2, 3, 4, 6, 7, 9, 11, 13, 14, 16, 17 }, m = 21;
int flag[11] = {0};
test(a, flag, 11, m);
}