正整数的划分问题

/*
 * 正整数的划分问题
 * 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;
}

 

你可能感兴趣的:(C++,c,C#,J#)