Roadmap. Ricorsione: funzioni ricorsive. Definizione di fattoriale. Definizione dei numeri Fibonacci
|
|
- Placido Lupo
- 7 anni fa
- Visualizzazioni
Transcript
1 Modulo di Roadmap 0. Primi passi con Java 1. Buone abitudini 2. Tipi di dati primitivi 3. Uso di classi 4. Leggere e scrivere 5. Definire metodi 7. Array e Collection 8. Progetto di classi 9. Ereditarietà 10. Eccezioni 11. Stream 12. Ricorsione 6. Strutture di controllo Ricorsione: funzioni ricorsive Definizione di fattoriale 0! = 1 n! = n(n - 1)! Definizione dei numeri Fibonacci Fib(0) = 0 Fib(1) = 1 Fib(n) = Fib(n-1) + Fib(n-2) Ricorsione 1
2 Modulo di Strutture dati ricorsive Una lista è: la lista vuota ( ) oppure un insieme costituito dal primo elemento della lista e da un altra lista (il resto della lista) Un albero è: un singolo nodo oppure l'insieme costituito da un singolo nodo e da altri alberi (sottoalberi di quel nodo) Gli alberi Nodo radice Figli del nodo radice X Figli del nodo X Nodi foglia Ricorsione 2
3 Modulo di Caratteristiche della ricorsione La definizione di un'entità contiene un riferimento all'entità stessa Tramite una regola finita è possibile definire un insieme infinito di oggetti Per essere corretta dal punto di vista logico,, la definizione ricorsiva deve presentare diverse alternative, tra le quali almeno una non deve contenere l'autoriferimento Vi sono entità "naturalmente" ricorsive,, per le quali risulta innaturale (o impossibile) immaginare una definizione non ricorsiva Roadmap 12. Ricorsione Metodi ricorsivi Ricorsione 3
4 Modulo di Metodi ricorsivi E' possibile definire metodi ricorsivi, cioè invocare, all'interno del corpo di un metodo,, lo stesso metodo Perchè la definizione ricorsiva sia corretta (e non dia luogo a cicli infiniti) ) è necessario che: sia presente una condizione di terminazione, cioè sia possibile un'esecuzione non ricorsiva del metodo ad ogni chiamata ricorsiva, si effettui un passo di ricorsione, cioè ci si avvicini alla condizione di terminazione Calcolo del fattoriale con ricorsione public static int factorial(int int n) if (n == 0) return 1; else int result = n * factorial(n - 1); return result; Ricorsione 4
5 Modulo di Calcolo del fattoriale con ricorsione factorial(5) * factorial(4) 24 4 * factorial(3) 6 3 * factorial(2) 2 2 * factorial(1) 1 1 * factorial(0) 1 Calcolo del fattoriale con iterazione public static int factorial (int n) if (n == 0) return 1; else int result = 1 for (int i = 2; i <= n; i++) result = result * i; return result; i result Ricorsione 5
6 Modulo di Calcolo Fibonacci ricorsivo public static int fibonacci(int int n) if (n <= 1) return n; else int result= fibonacci(n (n-1) + fibonacci(n (n-2); return result; Calcolo Fibonacci ricorsivo fib(5) fib(4) fib(3) fib(2) fib(3) fib(2) fib(1) fib(1) fib(0) fib(2) fib(1) fib(1) fib(0) fib(1) fib(0) Ricorsione 6
7 Modulo di Calcolo Fibonacci iterativo public static int fibonacci(int int n) if (n <= 1) return n; else int fib = 1; int fibmeno1 = 0; int temp; for (int( i = 1; i <= n - 1; i++) temp = fib; fib = fib + fibmeno1; fibmeno1 = temp; return fib; Calcolo Fibonacci iterativo i fib fibmeno1 temp int fib = 1; int fibmeno1 = 0; int temp; for (int( i = 1; i <= n - 1; i++) temp = fib; fib = fib + fibmeno1; fibmeno1 = temp; Ricorsione 7
8 Modulo di Roadmap 12. Ricorsione Metodi ricorsivi Ricorsione e iterazione Ricorsione e iterazione Ricorsione e iterazione rappresentano due scelte alternative per risolvere problemi che richiedano l'esecuzione ripetuta di certe operazioni I termini di confronto sono: la semplicità di codifica l'efficienza di esecuzione Il confronto va fatto caso per caso ma, in linea di massima: la ricorsione privilegia la semplicità di codifica l'iterazione privilegia l'efficienza di esecuzione Ricorsione 8
9 Modulo di Ricorsione e iterazione L'uso dell'iterazione è da preferire quando: la soluzione iterativa e ricorsiva sono paragonabili dal punto di vista della complessità l'occupazione di memoria generata dalla ricorsione viene evitata tramite la soluzione iterativa Ricorsione e iterazione L'uso della ricorsione è da preferire quando: la complessità della soluzione iterativa è decisamente superiore a quella della soluzione ricorsiva l'occupazione di memoria è necessaria alla soluzione del problema (ad ogni passo si deve tener traccia dello stato) ) e si verificherebbe anche nella soluzione iterativa Ricorsione 9
10 Modulo di Usa la testa, non le gambe! Per verificare la correttezza di una procedura ricorsiva non conviene cercare di ricostruire laboriosamente e macchinosamente la sua esecuzione da parte dell'elaboratore Bisogna invece verificare la correttezza logica della condizione di terminazione e del passo di ricorsione Roadmap 12. Ricorsione Metodi ricorsivi Ricorsione e iterazione Esempi Ricorsione 10
11 Modulo di Permutazioni (o anagrammi) Data una String di lunghezza arbitraria se ne vogliono generare tutte le permutazioni (che sono n!) P.e. data la parola cena avremo 24 permutazioni: cena cean cnea cnae caen cane ecna ecan enca enac eacn eanc ncea ncae neca neac nace naec acen acne aecn aenc ance anec Permutazioni: visione ricorsiva L insieme di permutazioni può essere visto come N insiemi (uno per ogni lettera della parola, in questo caso 4) Ognuno di questi insiemi può essere ottenuto fissando la lettera iniziale e calcolando le permutazioni delle lettere rimanenti Ricorsione 11
12 Modulo di Il metodo main import java.util util.*; public class Permutazioni final static private String MESSAGGIO = "Inserire la parola di cui calcolare le permutazioni:"; public static void main(string [] args) String inserita = MyUtil.leggiString leggistring(messaggio); Vector <String> > risultato = permutazioni(inserita); for (String permutazione : risultato) System.out.println println(permutazione); //... METODO PERMUTAZIONI Il metodo ricorsivo public static Vector<String String> > permutazioni(string dapermutare) Vector<String String> > prodotto = new Vector<String String>(); if (dapermutare.length() <= 1) prodotto.add add(dapermutare); else for (int i = 0; i < dapermutare.length length(); i++) char iniziale = dapermutare.charat charat(i); String unodimeno=dapermutare dapermutare.substring(0,i)+ dapermutare.substring substring(i+1); Caso base: se la stringa da permutare è vuota o contiene un solo carattere, l unica permutazione è la stringa stessa Vector<String String> subprodotto = permutazioni(unodimeno unodimeno); for (String subpermutazione : subprodotto) prodotto.add add(iniziale + subpermutazione); // for // else return prodotto; Si ritorna il risultato Scansione della stringa Si seleziona il carattere iniziale ed ottiene la stringa con i restanti caratteri Chiamata ricorsiva su stringa più corta Si unisce il carattere iniziale a ciascuna subpermutazione generata ricorsivamente e si aggiunge al Vector Ricorsione 12
13 Modulo di La torre di Hanoi Un labirinto Ricorsione 13
Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario La ricorsione Metodi ricorsivi Esercizi proposti 16/01/2013 2 La ricorsione In Java ogni metodo può chiamare anche se stesso,
DettagliCapitolo 19. Ricorsione
Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!
DettagliLA RICORSIONE LA RICORSIONE LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO
LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini
Dettaglin n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita
Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale
DettagliLa Ricorsione. Carla Binucci e Walter Didimo
La Ricorsione Carla Binucci e Walter Didimo Definizione induttiva di funzioni Una funzione definita in modo induttivo è una funzione definita in termini di sé stessa ad esempio la funzione f(n) = n! (fattoriale
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 19 Ricorsione A. Miola Marzo 2010 http://www.dia.uniroma3.it/~java/fondinf/ Ricorsione 1 Contenuti Funzioni e domini definiti induttivamente
DettagliLA RICORSIONE. Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa
LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini
DettagliLA RICORSIONE! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa
LA RICORSIONE! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini
Dettagli3 aprile o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri. si raccomanda la puntualita!
3 aprile 2002 Avvisi: 1 o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri si raccomanda la puntualita! Qualche informazione sull esonero Argomenti trattati: svolti nelle
DettagliProgrammazione Ricorsione
Programmazione Ricorsione Samuel Rota Bulò DAIS Università Ca Foscari di Venezia. Outline Ricorsione Cos è la ricorsione? In matematica... n! = { n (n 1)! se n > 0 1 altrimenti N = {0} {i + 1 : i N} Principio
DettagliProgrammazione ricorsiva.
In quasi tutti i linguaggi di programmazione evoluti è ammessa la possibilità di definire funzioni/procedure ricorsive: durante l esecuzione di una funzione F è possibile chiamare la funzione F stessa.
DettagliProgrammazione ricorsiva: cenni
In quasi tutti i linguaggi di programmazione evoluti è ammessa la possibilità di definire funzioni/procedure ricorsive: durante l esecuzione di una funzione F è possibile chiamare la funzione F stessa.
DettagliTempo e spazio di calcolo (continua)
Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza
DettagliRICORSIONE. Informatica B - A.A. 2013/2014
RICORSIONE Informatica B - A.A. 2013/2014 RICORSIONE Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che comporta
DettagliSviluppo di progetti. metodologie di soluzione di un problema. iterazione o ricorsione nel pensare per OGGETTI
Sviluppo di progetti metodologie di soluzione di un problema iterazione o ricorsione nel pensare per OGGETTI Incrementare vs pensare a oggetti Ho bisogno di andare da A a B in modo più veloce Iterazioni
DettagliPROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE
PROGRAMMAZIONE II canale A-D 2007-2008 14 luglio 2008 TRACCIA DI SOLUZIONE 1. Si vogliono realizzare mediante puntatori delle liste circolari, cioè delle liste tali che l ultimo elemento della lista punta
DettagliLa ricorsione. Induzione nel progetto e nella verifica di programmi ricorsivi. Le forme della ricorsione
La ricorsione Induzione nel progetto e nella verifica di programmi ricorsivi. Le forme della ricorsione Circoli viziosi Se in una definizione ciò che viene definito (definiendum) è usato per definire (nel
DettagliTempo e spazio di calcolo (continua)
Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Effetti collaterali Metodi ricorsivi Esercizi proposti 19/04/2011 2 import javax.swing.joptionpane; public class esempioarrayg{ public
DettagliEsempio: il fattoriale di un numero fact(n) = n! n!: Z! N n! vale 1 se n " 0 n! vale n*(n-1)! se n > 0. Codifica:
! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa!! La ricorsione consiste nella possibilità di definire una funzione in termini di se
DettagliRicorsione. quindi si può definire n! mediante i seguenti due punti:
Ricorsione Due definizioni del fattoriale Prima definizione: n! = 1 2 3....(n-1) n Per la seconda definizione notiamo che 1 2 3.... n = (n-1)! n (n-1)! quindi si può definire n! mediante i seguenti due
DettagliRicorsione. DD cap. 5 pp KP cap. 5 pp
Ricorsione DD cap. 5 pp.160-184 KP cap. 5 pp.199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale se n>1 n!=n(n-1)(n-2)(n-3) 1; se n=0 o 1 n!=1. ma (n-1)! la definizione
DettagliProgrammazione ricorsiva
Programmazione ricorsiva Fondamenti di Informatica Ricorsione q Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma
DettagliPensiero Algoritmico. Lezione 3 23 Novembre Ripasso. Anatomia di un programma. Anatomia di un programma. Ozalp Babaoglu Università di Bologna
Pensiero Algoritmico Lezione 3 23 Novembre 2016 Ozalp Babaoglu Università di Bologna Ripasso Definizione del problema Astrarre i dettagli, costruire un modello Costruire l algoritmo che risolve il problema
DettagliRicorsione. Ricorsione. Ricorsione. Walter Cazzola. Dal dizionario Garzanti (www.garzantilinguistica.it).
Outline vs Iterazione. Walter Cazzola Dipartimento di Informatica e Comunicazione Università degli Studi di Milano Definizioni La ricorsione come strumento di programmazione implementazione di metodi ricorsivi
DettagliOperativamente, risolvere un problema con un approccio ricorsivo comporta
! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa!! La ricorsione consiste nella possibilità di definire una funzione in termini di se
DettagliCorso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale
DettagliEsempio : i numeri di Fibonacci
Esempio : i numeri di Fibonacci La successione di Fibonacci F 1, F 2,... F n,... è definita come: F 1 =1 F 2 =1 F n =F n 1 F n 2,n 2 Leonardo Fibonacci (Pisa, 1170 Pisa, 1250) http://it.wikipedia.org/wiki/leonardo_fibonacci
DettagliRicorsione. Lucidi a cura di Gianpaolo Cugola, Carlo Ghezzi, Gian Pietro Picco Dipartimento di Elettronica e Informazione
Ricorsione Lucidi a cura di Gianpaolo Cugola, Carlo Ghezzi, Gian Pietro Picco Dipartimento di Elettronica e Informazione Definizioni ricorsive Sono comuni in matematica Esempio: il fattoriale di un naturale
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
DettagliIntroduzione alla Ricorsione
Introduzione alla Corso di Informatica A Vito Perrone Indice La formulazione in termini ricorsivi di problemi e algoritmi La ricorsione come strumento di programmazione L esecuzione dei sottoprogrammi
DettagliRicorsione: C era una volta un Re
Ricorsione: C era una volta un Re I C era una volta un Re seduto sul sofà che disse alla sua serva raccontami una storia e la serva incominciò: I C era una volta un Re seduto sul sofà che disse alla sua
DettagliProgrammazione ricorsiva
Programmazione ricorsiva Definizione di ricorsione Funzioni ricorsive Una funzione matematica è definita per ricorsione (o per induzione) quando è espressa in termini di se stessa. ESEMPIO il fattoriale
DettagliLo sviluppo di un semplice programma e la dimostrazione della sua correttezza
Il principio di induzione Consideriamo inizialmente solo il principio di induzione per i numeri non-negativi, detti anche numeri naturali. Sia P una proprietà (espressa da una frase o una formula che contiene
DettagliLA RICORSIONE LA RICORSIONE
LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini
DettagliJava: esempi di programmazione
Java: esempi di programmazione Problemi elementari di programmazione.................. 2354 a2» 2013.11.11 --- Copyright Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net Somma tra due
DettagliMetodi statici. Dichiarazione e chiamata di metodi statici
Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un
DettagliRICORSIONE RICORSIONE
Perchè RICORSIONE (Come, Quando e Perchè) i programmi ricorsivi sono più chiari, più semplici, più brevi e più facili da capire delle corrispondenti versioni iterative. il programma spesso riflette fedelmente
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E12 Esercizi su ricorsione A.Miola Marzo 2012 http://www.dia.uniroma3.it/~java/fondinf/ Esercizi Ricorsione 1 Contenuti q Applicazione
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
DettagliApprocci nella soluzione di un problema
Approcci nella soluzione di un problema Bottom-up dalla conoscenza del singolo componente alle soluzioni Bottom-up A partire dal considerare oggetti più semplici o dati empirici (dal particolare), con
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
Dettagli21 - Alberi e Ricorsione
21 - Alberi e Ricorsione Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliAltri Esercizi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E17. C. Limongelli Maggio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E17 C. Limongelli Maggio 2012 1 Contenuti q Definizione di classi con ereditarietà q Uso di tipi di dati astratti q Ricorsione
DettagliDIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA INFORMATICA B + C
INFORMATICA B + C (sezione L-Z) Ingegneria Elettrica, Chimica e dei Materiali La ricorsione Ricorsione Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma
DettagliEsempi di programmazione in C
Esempi di programmazione in C Problemi elementari..................................... 363 Somma tra due numeri positivi......................... 363 Moltiplicazione di due numeri positivi attraverso la
DettagliLE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve
LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione
DettagliRicorsione. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico
Ricorsione Stefano Ferrari Università degli Studi di Milano stefanoferrari@unimiit Programmazione anno accademico 2016 2017 Funzioni ricorsive Chiamata è ciascun uso di una funzione nel main o in un altra
DettagliArray. Definizione e utilizzo di vettori
Array Definizione e utilizzo di vettori Array (1/2) Un array o vettore rappresenta un insieme di elementi dello stesso tipo. Sintassi per la creazione di un array: tipo_elementi[] nome; nome = new tipo_elementi[numero_elementi];
DettagliRicorsione. Emilio Di Giacomo e Walter Didimo
Ricorsione Emilio Di Giacomo e Walter Didimo Ricorsione La ricorsione è una tecnica di progettazione del software che si basa sull uso di metodi/funzioni ricorsivi/e Un metodo/funzione ricorsivo/a è un
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E02 Esercizi su ricorsione F. Gasparetti Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Esercizi Ricorsione 1 Contenuti!
Dettaglipublic static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
DettagliIndice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
DettagliDIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione
INFORMATICA B Ingegneria Elettrica La ricorsione Ricorsione Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che
Dettaglin n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita
Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale
DettagliIl principio di induzione. La Ricorsione. Il fattoriale: iterativo. Il fattoriale: ricorsivo. P (0) P (n) P (n + 1) per ogni n
Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche La Ricorsione Prof. Stefano Guerrini guerrini@di.uniroma1.it Programmazione II (can. P-Z) A.A. 2005-06 Il principio di induzione
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione informale di algoritmo Insieme di istruzioni, definite
DettagliJava: esempi di programmazione
Java: esempi di programmazione Problemi elementari di programmazione.................. 1025 Somma tra due numeri positivi........................ 1025 Moltiplicazione di due numeri positivi attraverso
DettagliGLI ALBERI BINARI DI RICERCA. Cosimo Laneve
GLI ALBERI BINARI DI RICERCA Cosimo Laneve argomenti 1. alberi binari di ricerca 2. la ricerca di elementi e la complessità computazionale 3. operazione di cancellazione di elementi 4. esempi/esercizi
Dettagli1) Somma dei primi n numeri naturali: 3) Ricerca di un elemento el in una sequenza di interi: FONDAMENTI DI INFORMATICA II Ricorsione 2
FUNZIONI RICORSIVE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento (chiamata) a se stessa. Esempio: Esempi di problemi ricorsivi: 1) Somma dei primi
DettagliFondamenti di Programmazione
Fondamenti di Programmazione 1 Programmazione Concetti base: dati istruzioni Dati: variabili tipi Istruzioni: istruzioni base strutture di controllo sotto-programmi 2 Sotto-programmi Necessità di scomporre
DettagliFUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice
Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni
DettagliLezione XII Ricorsione
Lezione XII Ricorsione Scopo della lezione Definire e implementare metodi ricorsivi XII.2 Ricorsione Dal dizionario Garzanti (http://www.garzantilinguistica.it) Lemma Etimologia Definizione ricorsivo Deriv.
DettagliINFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 5 Ing. Gian Enrico Conti Dott. Michele Zanella
INFORMATICA A Titolo presentazione sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 5 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario
DettagliFUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi:
FUNZIONI RICORSIVE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento (chiamata) a se stessa. Esempio: Esempi di problemi ricorsivi: 1) Somma dei primi
DettagliAlberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei
Alberi Alberi: definizioni Alberi Binari Esercizi su alberi binari: metodi ricorsivi Struttura dati per alberi generici 1 Alberi Gli alberi sono strutture dati naturalmente ricorsive Un albero è un particolare
DettagliIL CONCETTO DI LISTA!
Liste semplici Obiettivi: Discutere la realizzazione collegata (puntatori a strutture) di liste semplici Introdurre l ADT lista semplice e le operazioni tipiche su essa 1 IL CONCETTO DI LISTA Una lista
DettagliCorso di Informatica
Corso di Informatica Modulo T3 3 Ricorsione Prerequisiti Programmazione elementare Tecnica top-down Struttura e funzionamento dei sottoprogrammi Pila di attivazione Metodo di Euclide per il calcolo del
Dettaglima può aiutare La ricorsione all opera
ma può aiutare Un problema complesso Numero di percorsi su una griglia di strade (Manhattan-like) quanti percorsi minimi differenti da A a B? minimi: aventi la minima lunghezza possibile ogni segmento
DettagliA. Ferrari Informatica
Informatica ricorsione definizioni o un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di se stesso o la ricorsione è un mezzo molto potente per le definizioni e le dimostrazioni
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliLaboratorio di Informatica
Laboratorio di Informatica Seconda lezione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Dottoressa Sara Zuppiroli - sara.zuppiroli@unibo.it L'importanza di capire Perché non dobbiamo dichiarare
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Informazioni sul corso + Un introduzione informale agli algoritmi Domenico Fabio Savo 1 Domenico Fabio Savo Email: savo@dis.uniroma1.it Web: http://www.dis.uniroma1.it/~savo
DettagliLezione 6 programmazione in Java
Lezione 6 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi
DettagliMetodi. Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere:
Metodi Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere: invocazione: esecuzione di un metodo assegnamento: cambia lo stato di un campo ripetizione:
DettagliALBERI. Angelo Di Iorio Università di Bologna
ALBERI Angelo Di Iorio Università di Bologna Esercizio 1 Implementare una classe Java per memorizzare e leggere informazioni relative a una dinastia Esempio nella prossima slide Per ogni persona: Nome
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliAlberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
DettagliINFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti
INFORMATICA A Titolo presentazione sottotitolo A.A. 2018-19 Milano, XX mese 20XX Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti Ricorsione La ricorsione è un approccio per la risoluzione
DettagliSTRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe
STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe String Una stringa Java rappresenta uno specifico valore e come
DettagliLaboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 26 Gennaio 2011 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Pizzeria. La classe Tavolo ha i seguenti attributi: nome (una
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E04 Esercizi sui problemi di ordinamento C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Algoritmi di Ordinamento
DettagliEsempi di Problemi Iterativi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E07 C. Limongelli Dicembre 2011 1 Contenuti q Esercizi: Palindroma Anagramma Fibonacci 2 Palindroma q Scrivere un programma che
DettagliGRAFI. Angelo Di Iorio Università di Bologna
GRAFI Angelo Di Iorio Università di Bologna Esercizio 1 Implementare una classe Java per memorizzare e manipolare un grafo orientato di nodi di tipo T (usando il framework Generics) Applicazioni: rete
DettagliComunicazioni di servizio. I metodi - III. Oggi. Dove siamo. Esempio. Parametri di tipo array. Stefano Mizzaro 1. Domani non c è lezione :-(
Comunicazioni di servizio I metodi - III Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 11
DettagliRipasso di programmazione ricorsiva
Ripasso di programmazione ricorsiva Ripasso di programmazione ricorsiva Algoritmo ricorsivo: algoritmo espresso in termini di se stesso. Programmazione iterativa e programmazione ricorsiva sono equivalenti.
DettagliCORSO DI PROGRAMMAZIONE
ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE RICORSIONE E METODI RICORSIVI DISPENSA 07.03 07-03_Ricorsione_[ver_16] Questa dispensa è rilasciata sotto la licenza Creative Common
DettagliEsercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
DettagliMETODI in Java. Prof.Angela Bonifati. Metodi e Sottoprogrammi
Fondamenti di Informatica METODI in Java Prof.Angela Bonifati 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile definire nuovi tipi di dati, tramite i metodi è possibile
DettagliNote ed esercizi aggiuntivi
Corso di Programmazione Anno Accademico 2015 2016 Prof. Giovanni Pighizzini Note ed esercizi aggiuntivi Gli esercizi proposti sono utili per rivedere gli esempi riportati, che sono stati sviluppati e discussi
DettagliDo...While() Break Continue Concetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Do...While() Break Continue Concetto di Funzione e Procedura METODI in Java Prof.Angela Bonifati 1 Istruzione while int vet1[] = new int[20]; int vet2[] = new int[20]; for(int
Dettagli