// 將一個正整數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;
}
}