/* * 正整数的划分问题 * 6 * 5+1 * 4+2=4+1+1 * 3+3=3+2+1=3+1+1+1 * 2+2+2=2+2+1+1=2+1+1+1+1 * 1+1+1+1+1+1 */ #include<stdio.h> /* * 将正整数n分解为最大加数为m的组合 */ int getDivideNum(int m,int n) { if(m==1||n==1)return 1; else if(m>n)return getDivideNum(n,n); else if(m==n)return 1+getDivideNum(m-1,n); else if(m<n)return getDivideNum(m-1,n)+getDivideNum(m,n-m); } int main() { int m,n; m=2; n=6; int count=getDivideNum(m,n); printf("count=%d\n",count); return 0; }