求解释一段整数划分的程序(源代码如下)
#include<stdio.h>int stack[100];
int top;
int total,n;
void dfs(int index)
{
int i;
if(total==n) //当整体相等, 输出
{
printf("%d=",n);
for(i=top-1;i>0;i--)
printf("%d+",stack[i]);
printf("%d\n",stack[0]);
}
if(total>n ) //大于错误,,不理会
return ;
for(i=n-1;i>=index;i--) //遍历所有的数字
{
total+=i; //获取这个情况
stack[top++]=i; //存储,
dfs(i); //递归
total-=i; //递归结束后恢复。下同
stack[--top];
}
}
void main()
{
while(scanf("%d",&n)!='\n')
{
top=0;
total=0;
dfs(1);
}
}