Estratto del documento

Esercizio di laboratorio

Argomento: ricorsione semplice, argomenti sulla riga dei comandi.

Scrivere una classe eseguibile RecNumberPrinter, che effettui la stampa dei primi n numeri interi secondo un algoritmo ricorsivo.

  • Il massimo numero intero (positivo) da stampare viene passato come argomento nella riga di comando.
  • Il risultato della stampa viene visualizzato a standard output.

Suggerimento

Scrivere un metodo statico ricorsivo listNumbers(int n) che realizza l'algoritmo ricorsivo restituendo una stringa contenente i numeri da 1 a n, in ordine crescente, separati da uno spazio. Poi scrivere un metodo main che realizza il comportamento sopra specificato invocando il metodo listNumbers. Il metodo main non deve eseguire alcuna azione se non riceve parametri.

Esempio: l'invocazione listNumbers(5) restituisce la stringa "1 2 3 4 5".

Soluzione

La soluzione ricorsiva al problema è la seguente:

  • Se l'input è n = 1, allora la stringa da stampare è la stringa "1" (caso base).
  • Altrimenti (n>1) la stringa da stampare è ottenuta:
  1. Stampando la stringa corrispondente all'input n-1 (passo ricorsivo).
  2. Concatenando la stringa ottenuta con il numero n (preceduto da uno spazio).
public class RecNumberPrinter{
    public static void main(String[] args){
        if (args.length != 1)
            System.out.println("uso: $java RecNumberPrinter <n>");
        else
            System.out.println(listNumbers(Integer.parseInt(args[0])));
    }

    public static String listNumbers(int n){
        if (n <= 0) // senza questo controllo si rischia ricorsione infinita
            throw new IllegalArgumentException();
        if (n == 1) // caso base
            return "" + n;
        return listNumbers(n-1) + " " + n; // passo ricorsivo
    }
}
Anteprima
Vedrai una selezione di 1 pagina su 1
Informatica I - Esercizi ricorsione semplice 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