Originariamente inviato da VincenzoTheBest
Allora definisci prima la soluzione iterativa, e quindi ottieni quella ricorsiva.


In effetti puoi utilizzare anche un solo indice:

codice:
public int indexOf(String str, String sub){
       if ( sub.length() > str.length() )
            return -1;
       return indexOf(str, sub, 0);
}

private int indexOf(String str, String sub, int i){
        if( i+sub.length() > str.length() ) 
            return -1;

        if( sub.equals( str.substring(i, i+sub.length()) ) )
            return i;
        return indexOf(str, sub, i+1);
}
Pesavo che fosse più leggibile con due indici.