我需要编写一个方法,将数字递归分解为 1234567890,我当前的应用程序在抛出 StackOverflowError 之前仅适用于小数字。我知道我的问题是递归调用太多,但我不知道如何减少调用次数。
它需要是递归的。
我认为解决方案与我的算法背后的数学有关。我已经查看了不同的迭代解决方案,但我似乎无法用更少的调用来递归地执行它。编码:
public static boolean isPrime(int input, int i) {
if (i <= 2) {
return true;
}
if (input % i != 0) {
return isPrime(input, i-1);
} else {
factors(input, i);
return false;
}
}
public static void factors(int input, int i) {
if (i <= 1) {
System.out.printf(" %d", 1);
} else {
if (input % i == 0) {
System.out.printf(" %d", i);
}
factors(input, i - 1);
}
}
并由以下人员开始:
System.out.println("What integer would you like to factor?");
num1 = scan.nextInt();
if(isPrime(num1, num1 - 1)){
System.out.println("Input is a prime number");
} else {
System.out.println(" factors\nInput isn't a prime number.");
}