Quando utilizzi la ricorsione assicurati di scrivere correttamente i passi base. Se non li scrivi o li scrivi in modo sbagliato il tuo algoritmo non terminerà, quindi otterrai una bella "StackOverflowError".
Per scrivere il passo base, pensa sempre che nella ricorsione miri ad eseguire il tuo calcolo ad un problema sempre più piccolo ad ogni chiamata ricorsiva. Il problema più piccolo in assoluto è il tuo passo base.
In questo caso il problema più piccolo in assoluto è la stringa assente, cioè lunga 0. Questo è il primo controllo che fai.
Quindi:
codice:
// i è l'indice che utilizzi per scorrere la parola
// e se risulta uguale alla lunghezza della parola,
// alla prima chiamata della funzione esce subito
// ritornando la lunghezza 0, altrimenti se entra
// in questo if in una chiamata successiva, non
// somma nulla alla lunghezza calcolata fino a quel
// momento
if(i == parola.length()) {
return 0;
}
// dopo il passo base in genere avviene la chiamata ricorsiva
else {
// in sostanza sommi 1 alle successive chiamate ricorsive
// che devono avvenire sempre incrementando l'indice i
return 1 + lunghezza(parola, i + 1);
}