Fondamenti di Informatica II. Algoritmi ricorsivi e Backtracking
|
|
- Raffaella Valentino
- 7 anni fa
- Visualizzazioni
Transcript
1 Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Algoritmi ricorsivi e Backtracking
2 Introduzione Dalla prefazione al libro Algoritmi + Strutture Dati = Programmi di Niklaus Wirth La programmazione è un'arte costruttiva. Come si può insegnare un'attività costruttiva e creativa? Un metodo consiste nel cristallizzare principi elementari di composizione, estratti da molti casi, e mostrarli in modo sistematico. Tuttavia la programmazione è un campo di grande varietà, e spesso richiede complesse attività intellettuali. La credenza che essa possa essere condensata in una specie di puro insegnamento di ricette è sbagliata. Ciò che rimane nel nostro arsenale di metodi didattici è l'attenta selezione e presentazione di esempi importanti. [...] Una caratteristica di questo approccio è che molto viene lasciato allo studente, alla sua diligenza ed alla sua intuizione. Il nostro tenente generale, L. Eulero, confessa apertamente: [...] che in fututo non riempirà mai più di sessanta pagine (di calcoli) per ottenere un risultato che potrebbe essere dedotto in dieci linee, dopo qualche attenta considerazione [...] Tratto da Diatribe du docteur Akakia di Voltaire (Novembre 1752) 2
3 Algoritmi ricorsivi Un oggetto viene detto ricorsivo se esso comprende parzialmente se stesso, o se è definito in termini di se stesso. La ricorsione è uno strumento particolarmente potente per le definizioni matematiche. Alcuni esempi sono costituiti fai numeri naturali, dalle strutture ad albero e da certe funzioni (ad es. Il calcolo del fattoriale). La potenza della ricorsione nasce dalla possibilità di definire un insieme infinito di oggetti con una regola finita. Un insieme infinito di computazioni può, quindi, essere descritto con un programma ricorsivo finito, persino se il programma non contiene iterazioni esplicite. 3
4 Algoritmi ricorsivi (cont.) Gli algoritmi ricorsivi sono appropriati principalmente quando i problemi da risolvere, o le funzioni da calcolare o le strutture dati da elaborare sono già definiti in termini ricorsivi. Le funzioni (in linguaggio C) sono lo strumento necessario e sufficiente per esprimere ricorsivamente i programmi, poichè permettono di dare un nome a delle istruzioni che potranno poi essere invocate con quel nome. Vi sono due tipi possibili di funzioni ricorsive: dirette e indirette. L'uso della ricorsione potrebbe anche non essere immediatamente evidente nel testo di un programma. 4
5 Parametri delle funzioni ricorsive È pratica comune associare ad una funzione un insieme di oggetti locali, cioè variabili, costanti, ecc., che sono definiti localmente alla funzione e non esistono, nè hanno significato, al di fuori di essa. Ogni volta che la funzione viene attivata ricorsivamente, viene creato un nuovo insieme di variabili locali. Sebbene esse abbiano lo stesso nome dei corrispondenti elementi dell'insieme che era locale nella precedente istanza della funzione, i valori sono distinti. I conflitti vengono evitati mediante le regole di visibilità degli identificatori. La stessa regola vale per i parametri della funzione. 5
6 Il problema della terminazione Le funzioni ricorsive, come le istruzioni iterative, introducono la possibilità di computazioni che non terminano. La chiamata ricorsiva di una funzione deve essere subordinata ad una condizione che, ad un certo istante, divenga non soddisfatta. La tecnica fondamentale utilizzata per dimostrare la terminazione di una chiamata ricorsiva consiste nel definire una funzione f(x) (x è l'insieme delle variabili del programma), tale che f(x) 0 implichi la condizione di terminazione e nel dimostrare che f(x) decresce ad ogni chiamata. Nelle applicazioni pratiche è doveroso dimostrare che la massima profondità di ricorsione non solo è finita, ma è anche piccola (uso intensivo della memoria). 6
7 Quando non usare la ricorsione Gli algoritmi ricorsivi sono particolarmente appropriati quando i problemi, o i dati da trattare, sono definiti in termini ricorsivi. Ciò non significa che la presenza di una definizione ricorsiva basti a garantire che il modo migliore per risolvere un problema sia tramite un algoritmo ricorsivo. La spiegazione del concetto di algoritmo ricorsivo mediante esempi inappropriati, è stata una delle cause dell'identificazione del concetto di ricorsione con quello di inefficienza. 7
8 Quando non usare la ricorsione (cont.) La ricorsione deve essere evitata per quella classe di problemi in cui si devono calcolare dei valori che sono definiti in termini di più o meno semplici relazioni di ricorrenza. Fattoriale: f(n)=n*f(n-1) f(0)=1 int fattoriale_r (int n){ if (n==0) return 1; else return n*fattoriale_r(n 1); int fattoriale (int n){ int fatt=1; while(n>0) fatt*=n ; return fatt; Fibonacci: f(n)=f(n-1)+f(n-2) f(1)=1, f(0)=0 int fib_r (int n){ if (n==0 n==1) return n; else return fib_r(n 1)+fib_r(n 2); int fib (int n){ int i=1,fib=1,y=0; if (n==0) return 0; while(i<n){ fib+=y; y=fib y; i++; return fib; 8
9 Quando non usare la ricorsione (cont.) Quindi la lezione da trarre è che la ricorsione deve essere evitata quando esiste una soluzione iterativa ovvia. Ciò però non deve indurre ad evitare la ricorsione a qualunque costo. Il fatto che esistano implementazioni di funzioni ricorsive per macchine essenzialmente non ricorsive, dimostra che, per scopi pratici, ogni programma ricorsivo può essere trasformato in uno puramente iterativo. Questo procedimento, però, necessita della manipolazione esplicita di una pila di chiamata ricorsive che rende l'essenza del programma così oscura che esso diventa estremamente difficile da capire. Concludendo, algoritmi che per loro natura sono ricorsivi, piuttosto che iterativi, dovrebbero essere formulati con delle funzioni ricorsive. 9
10 Algoritmi di Backtracking Un'attività programmativa particolarmente affascinante è quella della risoluzione generale di problemi. Essa consiste nel determinare algoritmi che trovino delle soluzioni a specifici problemi senza seguire una regola fissa di computazione ma che procedano per tentativi. Decomposizione del procedimento in obiettivi parziali che possono essere espressi in termini ricorsivi e consistono nell'esplorazione di un numero finito di sottobiettivi. L'intero procedimento potrebbe essere visto come un processo di ricerca che gradulamente costruisce e percorre (pota) un albero di obiettivi parziali. Per molti problemi tale albero (e quindi il costo della ricerca) cresce molto rapidamente e deve essere potato mediante metodi euristici. 10
11 Algoritmi di Backtracking (cont.) Gli algoritmi di backtracking possono essere schematizzati nel seguente modo: vengono testati dei passi verso la soluzione finale. i passi vengono memorizzati e possono essere successivamente percorsi all'indietro e cancellati, se si scopre che non possono condure alla soluzione globale, cioè che portano ad un vicolo cieco. function tenta (candidato){ inizializza la scelta dei candidati successivi; while(la soluzione non è raggiunta && ci sono ancora candidati){ seleziona il candidato successivo; if (è accettabile){ registralo; if(la soluzione non è raggiunta){ tenta(candidato successivo); if (ha avuto esito negativo) cancella la registrazione; 11
12 Problemi risolvibili con il Backtracking Raggiungibilità in un grafo Il problema delle otto regine Il labirinto Il sudoku 12
A. 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
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
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
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
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
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
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 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
DettagliFondamenti di Informatica T. Linguaggio C: Stack e Ricorsione
Linguaggio C: Stack e Ricorsione FUNZIONI: IL MODELLO A RUN-TIME Ogni volta che viene invocata una funzione: si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri
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
DettagliCorso di Fondamenti di Informatica. La ricorsione
Corso di Fondamenti di Informatica La ricorsione La ricorsione Si dice che un oggetto (una struttura dati, una funzione matematica, un concetto ) è ricorsivo se è possibile darne una definizione 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
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
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
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
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
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
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
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
DettagliOperativamente, risolvere un problema con un approccio ricorsivo comporta
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
DettagliFondamenti di Informatica
Fondamenti di Informatica (La Ricorsione e Debugging) Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2017/18 OUTLINE La ricorsione - Principi base Caso Studio
DettagliRicorsione. Prof. Orazio Mirabella. La ricorsione. La ricorsione consiste nella possibilità di definire una funzione mediante se stessa.
Ricorsione Prof. Orazio Mirabella La ricorsione La ricorsione consiste nella possibilità di definire una funzione mediante se stessa. È basata sul principio di induzione matematica: se una proprietà P
DettagliUna 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
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!
DettagliProgrammazione 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,
Dettagliliceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA
INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE PROGRAMMAZIONE BIENNIO: SECONDA DISCIPLINA: INFORMATICA PIANO DI LAVORO DEL DOCENTE / RELAZIONE FINALE Anno scolastico 2014/2015 DOCENTE Prof. PAOLO ARMANI CLASSE:
DettagliRecord di Attivazione Cenni sulla ricorsione
MASTER Information Technology Excellence Road (I.T.E.R.) Cenni sulla ricorsione Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Il modello a RUN-TIME
DettagliUn tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente:
Pag 36 4) La ricorsione 4.1 Funzioni matematiche ricorsive Partiamo da un concetto ben noto, quello delle funzioni matematiche ricorsive. Una funzione matematica è detta ricorsiva quando la sua definizione
DettagliParte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1
Parte 2 Ricorsione - AA. 2012/13 [M.C.Escher Drawing hands, 1948] 2.1 Funzioni ricorsive Una funzione si dice ricorsiva se richiama se stessa, direttamente o indirettamente La ricorsione si dice diretta
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
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
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
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
DettagliIntroduzione alla Programmazione Funzionale
Introduzione alla Programmazione Funzionale April 27, 2017 Paradigmi di Programmazione Programmi sviluppabili usando diversi paradigmi Imperativo: computazione come modifica di stato Funzionale: computazione
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
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
DettagliUn tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente:
Pag 29 4) La ricorsione 4.1 Funzioni matematiche ricorsive Partiamo da un concetto ben noto, quello delle funzioni matematiche ricorsive. Una funzione matematica è detta ricorsiva quando la sua definizione
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
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
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
DettagliIl passo del gambero. Nel labirinto. Nel labirinto. La soluzione di problemi con la tecnica del Backtracking
Il passo del gambero La soluzione di problemi con la tecnica del Backtracking In ogni posizione provo sistematicamente tutte le strade, ricordando ogni volta l ultima scelta compiuta Ordine in cui tenteremo
Dettagliesegui Ricerca_binaria (metà sinistra di A, v) esegui Ricerca_binaria (metà destra di A, v)
4) La ricorsione Pag 36 Pag 36 Consideriamo una nuova formulazione dell algoritmo di ricerca binaria (nella quale sono volutamente tralasciati i dettagli per catturarne l essenza): Ricerca_binaria (A,
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
DettagliFondamenti di Informatica
Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile
DettagliFondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliMatlab: funzioni. Daniele Loiacono, Vittorio Zaccaria
Matlab: funzioni Daniele Loiacono, Vittorio Zaccaria Informatica B - Codice Corso: 081369 - A.A. 2010/2011 INGEGNERIA MECCANICA (BV) - INGEGNERIA IV (1 liv.) - Scaglione S - Z INGEGNERIA ENERGETICA (BV)
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
DettagliInformatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati
Informatica 3 LEZIONE 10: Introduzione agli algoritmi e alle strutture dati Modulo 1: Perchè studiare algoritmi e strutture dati Modulo 2: Definizioni di base Informatica 3 Lezione 10 - Modulo 1 Perchè
DettagliProblemi, algoritmi, calcolatore
Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione
DettagliInformatica (A-K) 5. Algoritmi e pseudocodifica
Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliIl concetto di calcolatore e di algoritmo
Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica
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
DettagliRoadmap. Ricorsione: funzioni ricorsive. Definizione di fattoriale. Definizione dei numeri Fibonacci
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à
DettagliEsercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen
Esercitazione Ricorsione May 31, 2016 Esercizi presi dal libro di Rosen Problema 2 a) sezione 5.3 Data la seguente funzione definita ricorsivamente come: f(n+1) = 2f(n) f(0) = 3 Determinare il valore di
DettagliFondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012
Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario Operatore? Tipo di dato: struct La ricorsione Funzioni ricorsive Esercizi proposti 26/04/2012 2 Operatore? L'operatore? può essere
DettagliFondamenti di Informatica T. Linguaggio C: Stack e Ricorsione
Linguaggio C: Stack e Ricorsione FUNZIONI: IL MODELLO A RUN-TIME Ogni volta che viene invocata una funzione: si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri
DettagliIl Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)
Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande
Dettagliint main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;
Problema: CALCOLARE LA SOMMA DEI FATTORIALI DEI PRIMI 100 NUMERI NATURALI 0!+1!+2! + 99! #include int fattoriale(int); Calcolo fattoriale int main(){ int numero; /* numero di cui voglio calcolare
DettagliLa ricorsione. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
La ricorsione Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario! Definizione di ricorsione e strategie divide et impera! Semplici algoritmi ricorsivi! Merge
DettagliRicorsione in C. slides credit Prof. Paolo Romano
Ricorsione in C slides credit Prof. Paolo Romano 2 Divide et impera Metodo di approccio ai problemi che consiste nel dividere il problema dato in problemi più semplici I risultati ottenuti risolvendo i
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 04 Introduzione ai Tipi astratti di dato A. Miola Febbraio 2007 http://www.dia.uniroma3.it/~java/fondinf2/ Introduzione ADT 1
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliLinguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri
DettagliUniversità degli Studi di Ferrara
Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018-2019 Programmazione Lezione 11 Funzioni Docente: Michele Ferrari - michele.ferrari@unife.it Nelle lezioni precedenti Operatore
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
DettagliUn po di Matematica. Il volo dei numeri di Mario Merz, un'installazione luminosa sulla Mole Antonelliana, rappresenta la successione di Fibonacci
Un po di Matematica Il volo dei numeri di Mario Merz, un'installazione luminosa sulla Mole Antonelliana, rappresenta la successione di Fibonacci La successione di Fibonacci è una sequenza di numeri naturali
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
DettagliAlgoritmi e Strutture Dati
Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino I conigli di Fibonacci Ricerca Binaria L isola dei conigli Leonardo da
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Modelli di calcolo e metodologie di analisi Domenico Fabio Savo 1 Notazione asintotica f(n) = tempo di esecuzione / occupazione di memoria di un algoritmo su input di dimensione
DettagliCENNI MINIMI DI PROGRAMMAZIONE FUNZIONALE IN PYTHON - V. 0.3
CENNI MINIMI DI PROGRAMMAZIONE FUNZIONALE IN PYTHON - V. 0.3 MATTEO PRADELLA 1. Introduzione e concetti base La programmazione funzionale è uno stile di programmzione che enfatizza la valutazione di espressioni,
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,
DettagliAlgoritmi e Strutture Dati. Capitolo 1 Un introduzione informale agli algoritmi
Algoritmi e Strutture Dati Capitolo Un introduzione informale agli algoritmi Ancora un esempio di problema e soluzioni algoritmiche: i numeri di Fibonacci verso un modello di calcolo più simile a un computer
DettagliLA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag.
I lucidi sono una rielaborazione e integrazione di quelli messi a disposizione dei docenti nel sito relativo al testo: Informatica: arte e mestiere 2/ed Stefano Ceri, Dino Mandrioli, Licia Sbattella Copyright
DettagliAlgoritmi e Strutture Dati
Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 I conigli di Fibonacci Ricerca Binaria L isola dei conigli
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
DettagliFunzioni in C. Informatica Generale - Funzioni in C Versione 1.0, aa p.1/25
Funzioni in C Informatica Generale - Funzioni in C Versione 1.0, aa 2005-2006 p.1/25 Definizione di funzione () è
DettagliAlgoritmi e Strutture Dati
Algoritmi Ricorsivi e Ricorrenze Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno
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.
DettagliFondamenti dell informatica
Fondamenti dell informatica Funzioni ricorsive e linguaggi funzionali Rosario Culmone rosario.culmone@unicam.it 16/4/2008 UNICAM - p. 1/21 Funzioni ricorsive Metodo di definizione di algoritmi introdotto
DettagliIl Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)
Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande
DettagliLezione di Laboratorio di Prgrammazione: /05/2019 a.a. 2018/2019 R.Prevete
Lezione di Laboratorio di Prgrammazione: 19 13/05/2019 a.a. 2018/2019 R.Prevete Ricorsione La struttura di una funzione ricorsiva per un problema P di dimensione n (n è la dimensione dei dati input, ad
DettagliLABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. Algoritmi ricorsivi
LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna Partiamo da un
DettagliInformatica Generale Andrea Corradini Algoritmi: ordinamento per inserimento e ricorsione
Informatica Generale Andrea Corradini 14 - Algoritmi: ordinamento per inserimento e ricorsione Sommario Un algoritmo iterativo: l'ordinamento per inserimento (insertion sort) La ricorsione: i numeri triangolari
DettagliTerzo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale
Terzo allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini luca@chiodini.org - l.chiodini@campus.unimib.it 16 marzo 2017 Programma 1. Lettura e analisi di un problema 2.
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
DettagliDispense per i corsi di Informatica generale Corso di laurea in Matematica e. Introduzione agli Algoritmi Corso di laurea in Informatica
Dispense per i corsi di Informatica generale Corso di laurea in Matematica e Introduzione agli Algoritmi Corso di laurea in Informatica Prof. Tiziana Calamoneri Prof. Giancarlo Bongiovanni Questi appunti
DettagliIstruzioni Condizionali
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 6 Istruzioni Condizionali Carla Limongelli Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Istruzioni condizionali
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
DettagliProgrammi e Oggetti Software
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 06 Programmi e Oggetti Software Marzo 2010 Programmi e Oggetti Software 1 Contenuti Cosa è un programma Cosa significa programmare Il
DettagliCorso di Programmazione
Corso di Programmazione I Accertamento del 21 Dicembre 2000 / A cognome e nome Risolvi i seguenti esercizi, riporta le soluzioni in modo chiaro negli appositi riquadri e giustifica sinteticamente le risposte
DettagliFondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio
Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Algoritmi
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
DettagliVariabili e assegnazione
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Variabili e assegnazione Carla Limongelli Marzo 2009 Variabili e assegnazione 1 Contenuti Variabili a ab e assegnazionea e Variabili e aree di
DettagliIntroduzione al linguaggio C Funzioni
Introduzione al linguaggio C Funzioni Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
DettagliParte 1. Fondamenti di Informatica Modulo Fondamenti di programmazione Prof.ssa Elisa Tiezzi
Parte 1 Fondamenti di Informatica Modulo Fondamenti di programmazione Prof.ssa Elisa Tiezzi Dove mi trovate Mercoledì dalle 9 alle 11 Venrdì dalle 9 alle 11 Piano 2 Stanza 231 Dipartimento di Ingegneria
Dettagli