JAVA, Ошибка Стакк Оверфлов в следующей программе

У меня есть следующая проблема overflow, выполнив это с немного большими числами и этим, что я поместил long вместо int, как я могу решать это?

public static long NI(long n){
    if (n==1)
        return 1;
    else
        return NI(n-1)+(2*n-1);
}

public static void main(String[] args) {
    Scanner sc = new Scanner (System.in);
    long num = sc.nextLong();

    System.out.println(NI(num));
    sc.close();
}

ошибка - следующая

Exception in thread "main" java.lang.StackOverflowError
    at NumImpares.NI(NumImpares.java:6)
    at NumImpares.NI(NumImpares.java:9)
    at NumImpares.NI(NumImpares.java:9)

линия 6 - if и линия 9 перекурсивный return.

5
задан 16.03.2019, 00:04
0 ответов