关于java整数划分并求出划分的个数的问题,有代码,能输出整数的划分,但输出的划分个数不对.public class numberDiv {//private static final huafen numberrDiv = null;//static int d[]=new int[32];static int num=0; public st

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 05:58:02
关于java整数划分并求出划分的个数的问题,有代码,能输出整数的划分,但输出的划分个数不对.public class numberDiv {//private static final huafen numberrDiv = null;//static int d[]=new int[32];static int num=0; public st

关于java整数划分并求出划分的个数的问题,有代码,能输出整数的划分,但输出的划分个数不对.public class numberDiv {//private static final huafen numberrDiv = null;//static int d[]=new int[32];static int num=0; public st
关于java整数划分并求出划分的个数的问题,有代码,能输出整数的划分,但输出的划分个数不对.
public class numberDiv {
//private static final huafen numberrDiv = null;
//static int d[]=new int[32];
static int num=0;
public static void main(String[] args) {
System.out.println("请输入的整数:");
Scanner sc=new Scanner(System.in);
int number=sc.nextInt();
numberDiv.Division(number,number,"");
System.out.println("num="+num);}
public static int Division(int m,int n,String str){
if ((m

关于java整数划分并求出划分的个数的问题,有代码,能输出整数的划分,但输出的划分个数不对.public class numberDiv {//private static final huafen numberrDiv = null;//static int d[]=new int[32];static int num=0; public st
import java.util.Scanner;
public class numberDiv {
  // private static final huafen numberrDiv = null;
  // static int d[]=new int[32];
  public static void main(String[] args) {
    System.out.println("请输入的整数:");
    Scanner sc = new Scanner(System.in);
    int number = sc.nextInt();
    int num = numberDiv.Division(number, number, "");
    System.out.println("num=" + num);
  }
  public static int Division(int m, int n, String str) {
    if ((m <= 0) || (n <= 0))
      return 0;
    if ((m == 1) || (n == 1)) {
      System.out.print(str);
      for (int i = 1; i < m; i++) {
        System.out.print("1+");
      }
      System.out.println("1");
      return 1;
    }
    if (n == m) {
      System.out.println(str + m);
      return 1 + numberDiv.Division(m, n - 1, str);
    }
    if (m > n) {
      int n1 = numberDiv.Division(m - n, n, str + n + "+");
      int n2 = numberDiv.Division(m, n - 1, str);
      return n1 + n2;
    }
    return numberDiv.Division(m, m, str);
  }
}
Division方法返回分解的个数,所以numberDiv类不需要再定义成员变量static int num=0;.
Division方法中if ((m == 1) || (n == 1))成立时,本次是一个分解,并且不需要再递归分解,所以返回1.
Division方法中if (n == m)成立时,本次是一个分解,且需要递归分解,所以返回1+递归分解个数.
Division方法中if (m > n)成立时,返回两个递归分解的个数之和.
Division方法中最后代码即为m < n,直接返回递归分解的个数.