StackOverflow Ошибка в программе, и я не могу найти причину - PullRequest
0 голосов
/ 02 сентября 2018
void recur(int i)
{
    if(i==n)
        return;
    String sub="";
    for(int j=i+1;j<n;j++)
    {
        sub=s.substring(i,j);
        if(isPalindrome(sub))
            System.out.println(sub);
    }
    recur(i++);
}

Я сталкиваюсь с StackOverflowError на

sub=s.substring(I,j); 

заявление.

s="geeks", initial value of I=0;

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Попробуйте

public class P {

    public static final String s="geeks";

    static void recur(int i){

        int n=6;   //Size of string

        if(i==n)
            return;

        String sub="";

        for(int j=i+1;j<n;j++)
        {
            sub=s.substring(i,j);
            //Any Function
            System.out.println(sub);
        }
        recur(++i);
    }


    public static void main(String[] args) {

        P.recur(0);
    }
}
0 голосов
/ 02 сентября 2018
recur(i++);

Значением выражения i++ является значение i в текущее время; и после этого вы увеличиваете его.

Как таковой, вы в основном вызываете:

recur(i);
i++;

И вы просто снова вызываете recur с тем же параметром.

Попробуйте:

recur(++i);
...