遞歸 正整數分解

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章