如何解决递归调用中的堆栈溢出错误?
How to solve a stack overflow error in recursive call?
import java.util.Scanner;
public class Task5 {
private static void stack(int x) {
if (x == 0) return;
stack(x - 1);
if (x % 35 == 0) {
System.out.println();
}
System.out.print(x + " ");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter number: ");
int x = sc.nextInt();
stack(x);
}
}
任何大于 9200 的数字都会导致堆栈溢出错误。是不是递归调用循环次数太多了?
是的,您遇到了溢出,因为您的递归堆栈因大量输入而变得非常深。这个函数没有理由需要递归,我建议使用循环实现迭代版本。
import java.util.Scanner;
public class Task5 {
private static void stack(int x) {
if (x == 0) return;
stack(x - 1);
if (x % 35 == 0) {
System.out.println();
}
System.out.print(x + " ");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter number: ");
int x = sc.nextInt();
stack(x);
}
}
任何大于 9200 的数字都会导致堆栈溢出错误。是不是递归调用循环次数太多了?
是的,您遇到了溢出,因为您的递归堆栈因大量输入而变得非常深。这个函数没有理由需要递归,我建议使用循环实现迭代版本。