Esercizio di laboratorio
Argomento: ricorsione semplice, argomenti sulla riga dei comandi.
Scrivere una classe eseguibile RecStringReverser capace di invertire una stringa in modo ricorsivo (ad es., l'inverso della stringa "Hello" è la stringa "olleH").
- La stringa viene passata come argomento nella riga di comando.
- Il risultato dell'inversione viene visualizzato a standard output.
Esempio di uso
$java RecStringReverser Hello
Suggerimento: scrivere un metodo statico ricorsivo reverseString che realizza l'algoritmo ricorsivo di inversione di stringhe, poi scrivere un metodo main che realizza il comportamento sopra specificato invocando il metodo reverseString. Il metodo main non deve eseguire alcuna azione se non riceve parametri.
Soluzione
La soluzione ricorsiva al problema è la seguente:
- Se la stringa ha lunghezza 1 oppure 0 allora la stringa con i caratteri invertiti coincide con quella di partenza (caso base).
- Altrimenti la stringa con i caratteri invertiti è ottenuta:
- Invertendo la sottostringa fatta da tutti i caratteri tranne il primo (passo ricorsivo).
- Concatenando la stringa ottenuta con il primo carattere.
public class RecStringReverser{
public static void main(String[] args){
if (args.length != 1)
System.out.println("uso: $java RecStringReverser <stringa>");
else System.out.println(reverseString(args[0]));
}
public static String reverseString(String s){
if (s == null)
throw new IllegalArgumentException();
if (s.length() < 2) //caso base
return s;
return reverseString(s.substring(1)) + s.charAt(0); //passo ricorsivo
}
}
-
Informatica
-
Informatica
-
Informatica I - Esercizi ricorsione semplice
-
Informatica I - Esercizi sottostringhe