Estratto del documento

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
 }
}
Anteprima
Vedrai una selezione di 1 pagina su 1
Informatica I - Esercizi ricorsione e stringhe Pag. 1
1 su 1
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher enricopava di informazioni apprese con la frequenza delle lezioni di Informatica 1 e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Avanzini Federico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community