// 将一个正整数n表示成一系列正整数之和,
// n = n1 + n2 + ... + nk ( 其中, n1 >= n2 >= ... >= nk , k >= 1 )
// 正整数n的一个这种表示称为正整数n的一个划分。
// 正整数n的不同的划分个数称为正整数n的划分数。
// 求划分数
// 将最大数n1不大于m的划分个数记作q(n,m)。
// 递归关系如下:
// 1、q(n,1) = 1 , n >= 1;
// 2、q(n,m) = q(n,n) , m >= n;
// 3、q(n,n) = 1 + q(n,n-1), m=n;
// 4、q(n,m) = q(n,m-1) + q(n-m,m) , n > m > 1;
/**
* 正整数分解
* @author kehuailin
*
*/
public class FenJie
{
public static void main(String[] args)
{
FenJie f = new FenJie();
int n = 6 ;
int sum = f.fun(n, 3 );
System.out.println(sum);
}
public int fun( int n, int m)
{
if (n == 1 || m == 1 )
return 1 ;
else if (n == m)
return fun(n, n - 1 ) + 1 ;
else if (n < m)
return fun(n, n);
else if (n > m)
return fun(n, m - 1 ) + fun(n - m, m);
return 0 ;
}
}