整数划分问题递归实现
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);
}
}