问题描述:输入一个不小于 10 的整数,输出其所有整数划分。
代码:
#include "pch.h"
#include <stdio.h>
int mark[100];
int n;
int num = 0;
void divide(int now, int k, int pre);
int main()
{
printf("输入要划分的整数:");
scanf_s("%d", &n);
divide(0, 0, n );
printf("一共有%d种划分方式\n", num);
return 0;
}
//now记录数组当前长度,k记录递归深度, pre记录前一个的值
void divide(int now, int k, int pre)
{
int i;
if (now > n)
return;
if (now == n) {
printf("%d=", n);
for (i = 0; i < k-1; i++) {
printf("%d+", mark[i]);
}
printf("%d\n", mark[i]);
num++;
}
else {
for (i = pre; i > 0; i--) {
if (i <= pre) {
mark[k] = i;
now += i;
divide(now, k + 1, i);
now -= i;
}
}
}
}
结果: