一、问题描述
二、思路描述
三、实现
//n = n1+n2+...+nn n1>=n2>=...>=nn
int q(int n, int m) //n是待划分的数字,m是加数的上限
{
if (n < 1 || m < 1) return 0;
if (n == 1 || m == 1) return 1; //待划分的数字等于1或者最大加数不超过1,划分数为1
if (m > n) return q(n, n); //n1 > n
if (n == m) return q(n, n - 1) + 1; //n1 = n
return q(n, m - 1) + q(n - m, m); //n1 < n 拆分成最大加数为m-1和最大加数为m两部分
}