您的位置:首页 > 其它

将整数分解成若干项相加的形式

2017-10-30 15:02 225 查看
#include<stdio.h>
#define MAXN 30
int Terms[MAXN];
int count;//count表示输出结果数
int N;//被分解的整数
void Search(int remain,int start,int num)
//remain剩余分解数,start表示分解起点数,分解得每一项应该大于等于start
//num用来记录已经分解得项数
{
int i;
if(0==remain)
{
count++;
printf("%d=%d",N,Terms[0]);
for(i=1;i<num;i++)
printf("+%d",Terms[i]);
printf(";");
printf("\n");
}
else
{
for(i=start;i<=remain;i++)
{
Terms[num]=i;
Search(remain-i,i,num+1);
}
}
}
int main()
{
scanf("%d",&N);
count=0;
Search(N,1,0);
if(count%4!=0)
printf("\n");
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归