Hi,

I have to write a recursive function that prints all the partitions for a given integer number,for example, the patitions of 4 are:

4

3 1

2 2

2 1 1

1 1 1 1

I created a function but there is a little problem that I can not realize. The output that I receive is:

4

3 1

2 2

1 1 <-- !!!!!!!

1 1 1 1

It seem like it misses a part of calculation.

Can somebody help me find the problem in my function or suggest me altrnative one.

My function:

Initial function call is Partition(N, N, ValueArray)Code:void Partition(int n, int limit, int value[Npartition]) { int i, k=1, min; if (n < limit) min = n; else min = limit; if (n>0) { for (i=min; i>0; i--) { for (k=0; k<Npartition; k++) { if (value[k] == 0) { value[k] = i; break; } } Partition(n-i, i, value); } } else { for (i=0; i<Npartition; i++) if (value[i] != 0) printf("%2d", value[i]); printf("\n"); for (i=0; i<Npartition; i++) value[i] = 0; } }

Thank you.