例如:
4=1+1+1+1;
4=1+1+2;
4=1+3;
4=2+2;
4=4;
代码实现:
int buf[50] = {0};
int num = 10;
void separateNumber(int number, int nPart, int nIndex)
{
if (nPart == 1)
{
buf[nIndex] = number;
printf("%d=", num);
for (int i=0; i<nIndex; i++)
{
printf("%d + ", buf[i]);
}
printf("%d/n", buf[nIndex]);
}
else
{
int minN = number / nPart;
for (int i=1; i<=minN; i++)
{
buf[nIndex] = i;
separateNumber(number - i, nPart-1, nIndex+1);
}
}
}
void main()
{
for (int i=num; i>=1; i--)
{
separateNumber(num, i, 0);
}
getch();
}