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);
    }
}

Any number above 9200 results in a stack overflow error. Is it because a recursive call loops too many times ?

1 answer

  • answered 2021-11-28 22:25 Based1776

    Yes, you're encountering an overflow because your recursion stack becomes extremely deep with large inputs. There's no reason this function needs to be recursive, I would suggest implementing an iterative version using loops.

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum