整數劃分問題遞歸實現
package wang;
import java.util.Scanner;
/****88****整數劃分問題*/
public class q {
public static int q(int n,int m)//定義一個單變量函數
{
if((n<1)||(m<1))//沒有整數
return 0;
if((n==1)||(m==1))//兩個都是1則不進行劃分
return 1;
if(n<m)//如果n<m就是根據n進行整數劃分
return q(n,n);
if(n==m)//兩個數相等,則進行遞歸調用函數
return q(n,m-1)+1;
return q(n,m-1)+q(n-m,m);//不滿足以上條件就是n>m,進行遞歸調用函數
}
public static void main(String[] args)
{
int n,m,s;
Scanner read=new Scanner(System.in);
System.out.println("請輸入n:");
n=read.nextInt();
System.out.println("請輸入m:");
m=read.nextInt();
s=q(n,m);
System.out.println(s);
}
}