Programmazione Ricorsione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Programmazione Ricorsione"

Transcript

1 Programmazione Ricorsione Samuel Rota Bulò DAIS Università Ca Foscari di Venezia.

2 Outline Ricorsione

3 Cos è la ricorsione? In matematica... n! = { n (n 1)! se n > 0 1 altrimenti N = {0} {i + 1 : i N} Principio di induzione P(0) P(n) P(n + 1) per ogni n N P(n) per ogni n N Paradosso di Russell A = {x : x / A}

4 Cos è la ricorsione? In arte... M.C. Escher 1948 M.C. Escher 1956

5 Cos è la ricorsione? In arte... M.C. Escher 1951 M.C. Escher 1961

6 Cos è la ricorsione? In arte matematica.. I frattali sono derivate da equazioni ricorsive su C.

7 Cos è la ricorsione? Nei detti popolari... E nato prima l uovo o la gallina?

8 Cos è la ricorsione? Dal dizionario... Ricorsione. Se ancora non vi è chiaro, vedi: Ricorsione.

9 Cos è la ricorsione? Per google...

10 Cos è la ricorsione? A Mosca...

11 In sostanza... Per imparare la ricorsione dovete prima imparare la ricorsione.

12 Se ancora non è chiaro... La ricorsione consiste nel definire cose in termini di sè stesse. Consente di definire in modo finito quantità infinite. N = {0} {i + 1 : i N} Consente di formulare la soluzione di un problema in funzione delle soluzioni di instanze più piccole dello stesso problema. { n (n 1)! se n > 0 n! = 1 altrimenti

13 Il principio di induzione Immaginiamo di voler verificare una proprietà definita sui naturali N. n n(n + 1) P(n) : i = 2 i=0 Innanzitutto dobbiamo verificare P(0) (caso base): P(0) : 0 = 0 i = i=0 0(0 + 1) 2 = 0

14 Il principio di induzione Successivamente dobbiamo verificare P(n + 1) assumendo P(n) (caso generale o passo induttivo) P(n + 1) : n+1 i = (n + 1) + i=0 = (n + 1) + n i = i=0 n(n + 1) 2 = (n + 1)(n + 2) 2 Per il principio di induzione ora sappiamo che P(n) è vera per ogni n N. P(0) è vera per il caso base P(1) è vera perchè P(0) P(1) per il caso generale P(2) è vera perchè P(1) P(2) per il caso generale...

15 Funzioni ricorsive Una funzione è ricorsiva se utilizza se stessa all interno della propria definizione. Al fine di potersi richiamare, la funzione deve avere un nome (definita con let). possiamo definire una funzione ricorsiva, ovvero abilitata a richiamare se stessa, nel seguente modo: let rec <fun> = fun <arg> -> <expr> [in <expr>] let rec <fun> <arg> = <expr> [in <expr>] Attenzione: è importante che vi sia sempre un caso base per evitare ricorsioni infinite!

16 Esempio per il fattoriale # let rec fattoriale n= if n <= 0 then 1 else n* fattoriale (n-1);; val fattoriale : int -> int = <fun> # fattoriale 10;; - : int = # let rec fattoriale = function 0 -> 1 n -> n * fattoriale(n-1);; val fattoriale : int -> int = <fun> Cosa succede se invochiamo fattoriale (-1);;?

17 Esercizi Scrivere una funzione potenza che calcoli n m, n R +, m N. Scrivere una funzione potenza che calcoli n m, n R +, m Z. Scrivere la funzione di Fibonacci: fib(0) = 0, fib(1) = 1, fib(k) = fib(k 1) + fib(k 2). Scrivere una funzione che calcoli il massimo comun divisore di due naturali positivi (con algoritmo di Euclide). Scrivere una funzione che testi la primalità di un numero intero. Scrivere una funzione ricorsiva per calcolare il resto della divisione intera tra due numeri interi.

18 Esercizi con liste Per risolvere questi esercizi potete utilizzare List.hd: data una lista l ritorna la testa List.tl: data una lista l ritorna la coda List.nth: dati una lista l e un intero i ritorna l i (i-esimo elemento a partire da 0!) List.length: data una lista ritorna la sua lunghezza. Esercizi Scrivere una funzione per invertire una lista. Scrivere una funzione che verifichi se una lista è palindroma (il dritto e il rovescio della lista sono uguali). Scrivere una funzione che calcoli il massimo di una lista. Scrivere una funzione che testi se una lista è monotona crescente o descrescente.

19 Programmazione Ricorsione Samuel Rota Bulò DAIS Università Ca Foscari di Venezia.

Programmazione Ricorsione in coda

Programmazione Ricorsione in coda Programmazione Ricorsione in coda Samuel Rota Bulò DAIS Università Ca Foscari di Venezia. Outline Ricorsione in coda Ricorsione in coda La ricorsione in coda (o tail-recursion) è un caso speciale di ricorsione

Dettagli

Lezione di Laboratorio di Prgrammazione: /05/2019 a.a. 2018/2019 R.Prevete

Lezione 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

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso 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

Dettagli

Programmazione Definizione di nuovi tipi

Programmazione Definizione di nuovi tipi Programmazione Definizione di nuovi tipi Samuel Rota Bulò DAIS Università Ca Foscari di Venezia. Outline Abbiamo incontrato i tipi primitivi. unit, bool, int, float, char, string Abbiamo visto come costruire

Dettagli

Corso di Informatica

Corso 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

Dettagli

Corso di Programmazione

Corso 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

Dettagli

Università Ca Foscari Dipartimento di informatica. Programmazione part-time. Esame Ocaml

Università Ca Foscari Dipartimento di informatica. Programmazione part-time. Esame Ocaml Soluzione Università Ca Foscari Dipartimento di informatica Programmazione part-time Esame Ocaml Nome: Matricola: Samuel Rota Bulò, a.a. 2009/2010 Programmazione part-time a.a. 2009/2010 Esame Ocaml Nome:

Dettagli

Esempio : i numeri di Fibonacci

Esempio : 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

Dettagli

La 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 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

Dettagli

A. Ferrari Informatica

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

Dettagli

Programmazione ricorsiva

Programmazione 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

Dettagli

Corso di Fondamenti di Informatica. La ricorsione

Corso 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

Dettagli

LA RICORSIONE LA RICORSIONE LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO

LA 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

Dettagli

La principale modalità di calcolo è l applicazione di funzioni

La principale modalità di calcolo è l applicazione di funzioni 1 La principale modalità di calcolo è l applicazione di funzioni Nei linguaggi funzionali puri non esistono strutture di controllo predefinite per la realizzazione di cicli quali for, while, repeat Un

Dettagli

Informatica Generale Andrea Corradini Algoritmi: ordinamento per inserimento e ricorsione

Informatica 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

Dettagli

Introduzione alla Ricorsione

Introduzione 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

Dettagli

LA 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! 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

Dettagli

RICORSIONE. Informatica B - A.A. 2013/2014

RICORSIONE. 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

Dettagli

Diverse politiche. La ricorsione PROGRAMMAZIONE TOP-DOWN ESEMPIO. Bottom-Up. Di solito è meglio alternare le due tecniche

Diverse politiche. La ricorsione PROGRAMMAZIONE TOP-DOWN ESEMPIO. Bottom-Up. Di solito è meglio alternare le due tecniche La ricorsione Top-Down Diverse politiche Si parte dal problema generale Poi si sce nei particolari (moduli, funzioni, ecc ) Bottom-Up Si creano prima i moduli e le funzioni base Poi si assemblano nel programma

Dettagli

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

n 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

Dettagli

Espressioni aritmetiche

Espressioni aritmetiche Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:

Dettagli

LA 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 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

Dettagli

Roadmap. Ricorsione: funzioni ricorsive. Definizione di fattoriale. Definizione dei numeri Fibonacci

Roadmap. 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à

Dettagli

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza

Lo 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

Dettagli

Analisi e Programmazione

Analisi e Programmazione Algoritmi 1 Analisi e Programmazione I Calcolatori Elettronici si differenziano da altri tipi di macchine per il fatto che possono essere predisposti alla risoluzione di problemi di diversa natura. A tale

Dettagli

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione

DIPARTIMENTO 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

Dettagli

Fondamenti di Informatica

Fondamenti 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

Dettagli

Laboratorio di Python

Laboratorio di Python Problem solving, Ricorsione, Università di Bologna 13 e 15 marzo 2013 Sommario 1 2 3 4 Errore di semantica Esercizio def vocali(s): voc='' for c in s: if c in 'aeiou': voc=voc+c return voc Cerchiamo di

Dettagli

Tecniche per risolvere problemi: riduzione a sottoproblemi più semplici. Ricorsione

Tecniche per risolvere problemi: riduzione a sottoproblemi più semplici. Ricorsione Tecniche per risolvere problemi: riduzione a sottoproblemi più semplici Ricorsione 1 Tecniche per risolvere problemi: riduzione a sottoproblemi più semplici Problema: dati tre numeri interi, calcolarne

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

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,

Dettagli

Ricorsione. 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. 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

Dettagli

Esercitazione 7 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Esercitazione 7 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Esercitazione 7 Algorithmi e Strutture Dati (Informatica) A.A 015/016 Tong Liu April 1, 016 Elementi fondamentali Notazioni Asintotiche Definition 1.1. (Notazione O) Sia g (n) una funzione di costo; indichiamo

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione

Corso 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

Dettagli

Risoluzione di un problema

Risoluzione di un problema Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito

Dettagli

Esercizi di programmazione ricorsiva. Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B)

Esercizi di programmazione ricorsiva. Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B) Esercizi di programmazione ricorsiva Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B) Corso di Laurea in Informatica Università di Pisa A.A. 2008/09 1. Dare il tipo delle funzione

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it 12 ottobre 2010 1 Vero o falso? Per ciascuna delle seguenti affermazioni, dire se è vera o falsa, fornendo una dimostrazione:

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 6 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 12 Marzo 2013 Funzioni che restituiscono tuple di valori Le funzioni Python possono

Dettagli

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA INFORMATICA B + C

DIPARTIMENTO 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

Dettagli

Ricorsione. DD cap. 5 pp KP cap. 5 pp

Ricorsione. 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

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Prof. Arcangelo Castiglione A.A. 2016/17 OUTLINE Principi di Base Casi di Studio Fattoriale Fibonacci Cenni Introduttivi su Simulink Principi di Base Una funzione ricorsiva è

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi

Dettagli

La Ricorsione. Carla Binucci e Walter Didimo

La 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

Dettagli

Esempio: 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:

Esempio: 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

Dettagli

Operativamente, risolvere un problema con un approccio ricorsivo comporta

Operativamente, 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

Dettagli

Operativamente, risolvere un problema con un approccio ricorsivo comporta

Operativamente, 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

Dettagli

a.a Codice corso: 21012

a.a Codice corso: 21012 Riepilogo sulla ricorsione Un algoritmo o una funzione matematica sono definiti ricorsivamente quando possono essere definiti facendo riferimento a se stessi. Si tratta cioè di un applicazione del principio

Dettagli

LA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag.

LA 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

Dettagli

Programmazione ricorsiva.

Programmazione 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.

Dettagli

Programmazione ricorsiva: cenni

Programmazione 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.

Dettagli

Considerazioni su Tipi di Dati

Considerazioni su Tipi di Dati Considerazioni su Tipi di Dati April 19, 2017 Definire Tipi di Dato Molti linguaggi permettono di definire sinonimi per tipi di dato esistenti... Non introducono nuovi valori La definizione di un nuovo

Dettagli

Laboratorio di Algoritmi e Strutture Dati Ingegneria e Scienze Informatiche - Cesena A.A

Laboratorio di Algoritmi e Strutture Dati Ingegneria e Scienze Informatiche - Cesena A.A Ingegneria e Scienze Informatiche - Cesena A.A. 2013-2014 dilena@cs.unibo.it, pietro.dilena@unibo.it Note introduttive sul corso Modalità d esame Note introduttive sul corso Finalità: fornire competenze

Dettagli

Laboratorio di Python

Laboratorio di Python Problem solving, Ricorsione, 14 marzo 2014 Sommario 1 2 3 4 Sintassi ed Esempi Esercizi Lunedì il numero di studenti che avevano consegnato gli esercizi era 13. Martedì il numero di esercizi ricevuti,

Dettagli

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

liceo 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:

Dettagli

Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa

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

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

x log(x) + 3. f(x) =

x log(x) + 3. f(x) = Università di Bari, Corso di Laurea in Economia e Commercio Esame di Matematica per l Economia L/Z Dr. G. Taglialatela 03 giugno 05 Traccia dispari Esercizio. Calcolare Esercizio. Calcolare e cos log d

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Algoritmi Unità 85. Verifiche. Una breve sintesi per domande e risposte.

Algoritmi Unità 85. Verifiche. Una breve sintesi per domande e risposte. Prerequisiti: - Conoscenza degli insiemi dei numeri naturali e interi. - Acquisizione del concetto di successione. Questa unità è riservata agli Istituti Tecnici e agli Istituti Professionali (5 a classe).

Dettagli

Pensiero 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 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

Dettagli

LA RICORSIONE LA RICORSIONE

LA 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

Dettagli

Analisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente.

Analisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente. Analisi asintotica Vittorio Maniezzo University of Bologna Analisi asintotica Obiettivo: semplificare l analisi del consumo di risorse di un algoritmo prescindendo dai dettagli implementativi o di altro

Dettagli

Fondamenti Teorici e Programmazione

Fondamenti Teorici e Programmazione Fondamenti Teorici e Programmazione Modulo A Elementi di Programmazione Claudio Gallicchio, Ph.D. Istruzioni Iterative Istruzioni do-while e break 2 Istruzione While - Repetita Sintassi guardia del ciclo

Dettagli

Laboratorio di Informatica L-A 1

Laboratorio di Informatica L-A 1 Funzioni e Ricorsione La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa È basata sul principio di induzione matematica: se una proprietà P vale per n=n 0 e si può

Dettagli

Funzioni e Spezie. Luca Abeni. March 14, 2016

Funzioni e Spezie. Luca Abeni. March 14, 2016 Funzioni e Spezie March 14, 2016 Spezie??? Qual è la relazione fra funzioni e spezie??? Non esiste... Ma procediamo un po alla volta Di cosa ci occupiamo oggi, allora? Funzioni in più variabili Abbiamo

Dettagli

Esercizi riguardanti limiti di successioni e di funzioni

Esercizi riguardanti limiti di successioni e di funzioni Esercizi riguardanti iti di successioni e di funzioni Davide Boscaini Queste sono le note da cui ho tratto le esercitazioni del giorno 0 Novembre 20. Come tali sono ben lungi dall essere esenti da errori,

Dettagli

Capitolo 19. Ricorsione

Capitolo 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!

Dettagli

Programmazione ricorsiva

Programmazione 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

Dettagli

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi Lezione 4 Problemi trattabili e soluzioni sempre più efficienti Gianluca Rossi Trattabile o intrattabile? Consideriamo ora il problema, ben noto a tutti gli studenti a partire dalla scuola media, di calcolare

Dettagli

Ricorsione. La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa

Ricorsione. La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa Funzioni e Ricorsione La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa È basata sul principio di induzione matematica: se una proprietà P vale per n=n 0 e si può

Dettagli

1 Multipli di un numero

1 Multipli di un numero Multipli di un numero DEFINIZIONE. I multipli di un numero sono costituiti dall insieme dei prodotti ottenuti moltiplicando quel numero per la successione dei numeri naturali. I multipli del numero 4 costituiscono

Dettagli

Ricorsione: C era una volta un Re

Ricorsione: 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

Dettagli

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1 Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)

Dettagli

Algoritmi. Strutture dati. Strumenti del linguaggio di programmazione

Algoritmi. Strutture dati. Strumenti del linguaggio di programmazione COSA IMPAREREMO ARGOMENTI CORSO Algoritmi Strutture dati Strumenti del linguaggio di programmazione ARGOMENTI CORSO Algoritmi Tipi di dato semplici Tipi di dato strutturati: array struct Strutture di controllo

Dettagli

Programmazione funzionale

Programmazione funzionale Cognome Nome Matricola Programmazione funzionale 12-09-2014 PROVA SCRITTA 1 2 3 4 5 Somma Il compito ha la durata di 1 ora, per la compilazione attenersi alle seguenti istruzioni: Scrivere in maniera chiara.

Dettagli

CORSO DI PROGRAMMAZIONE

CORSO 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

Dettagli

3. (Punti 8) Si consideri l integrale improprio. x n dx, n N.

3. (Punti 8) Si consideri l integrale improprio. x n dx, n N. Corso di Laurea in Ingegneria Biomedica ANALISI MATEMATICA Prova scritta del 4 febbraio 27 Fila. Esporre il procedimento di risoluzione degli esercizi in maniera completa e leggibile.. (Punti 9) Data l

Dettagli

PROGRAMMAZIONE: La selezione

PROGRAMMAZIONE: La selezione PROGRAMMAZIONE: La selezione Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l altra, riga per

Dettagli

Ricorsione. Emilio Di Giacomo e Walter Didimo

Ricorsione. 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

Dettagli

Esercizi sulla ricorsione

Esercizi sulla ricorsione Laboratorio di Sperimentazioni di Fisica I MOD A 21 Ottobre 2009 Esercizi sulla ricorsione enea.poletti@dei.unipd.it elisa.veronese@dei.unipd.it enrico.grisan@deiunipd.it Esempi classici: calcolare il

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 2 - Funzioni Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2.

Dettagli

Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive

Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di

Dettagli

Laboratorio 09. Programmazione - CdS Matematica. Ivano Lauriola 16 gennaio 2018

Laboratorio 09. Programmazione - CdS Matematica. Ivano Lauriola 16 gennaio 2018 Laboratorio 09 Programmazione - CdS Matematica Ivano Lauriola 16 gennaio 2018 Binary Search Tree Alberi binari di ricerca Gli alberi binari di ricerca (binary search trees, BST), detti anche alberi ordinati,

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

FUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice

FUNZIONI. 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

Dettagli

RICORSIONE RICORSIONE

RICORSIONE 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

Dettagli

DIARIO DEL CORSO DI ALGEBRA A.A. 2010/11 DOCENTE: ANDREA CARANTI

DIARIO DEL CORSO DI ALGEBRA A.A. 2010/11 DOCENTE: ANDREA CARANTI DIARIO DEL CORSO DI ALGEBRA A.A. 2010/11 DOCENTE: ANDREA CARANTI Lezione 1. mercoledí 15 settembre 2010 (2 ore) Presentazione del corso. Esercizio: cosa succede a moltiplicare per 2, 3, 4,... il numero

Dettagli

Tempo e spazio di calcolo (continua)

Tempo 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

Dettagli

La ricorsione. Ver Claudio Fornaro - Corso di programmazione in C

La ricorsione. Ver Claudio Fornaro - Corso di programmazione in C La ricorsione Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C 2 Divide et impera Metodo di approccio ai problemi che consiste nel dividere il problema dato in problemi più semplici I risultati

Dettagli

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

n 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

Dettagli

METODI MATEMATICI PER L INFORMATICA

METODI MATEMATICI PER L INFORMATICA METODI MATEMATICI PER L INFORMATICA Tutorato Lezione 7 19/05/2016 Corso per matricole congrue a 1 Docente: Margherita Napoli Tutor: Amedeo Leo Ricorsione Esercizio 2 pagina 357 Trovare f(1), f(2), f(3),

Dettagli

Ricorsione in C. slides credit Prof. Paolo Romano

Ricorsione 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

Dettagli

Tempo e spazio di calcolo (continua)

Tempo 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

Dettagli

Matlab: funzioni. Daniele Loiacono, Vittorio Zaccaria

Matlab: 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)

Dettagli

Università di Bologna

Università di Bologna Università di Bologna Corso di Laurea in Informatica Esercizi risolti sulla RICORSIONE STRUTTURALE Version 1 (tutti gli esami passati degli anni solari 2018 e 2019) 1. [logica2018-2019 risolto] Considerare

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso 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

Dettagli

CAPITOLO 1. I numeri naturali 0, 1, 2, 3,...

CAPITOLO 1. I numeri naturali 0, 1, 2, 3,... CAPITOLO 1 I numeri naturali I numeri naturali sono quelli che usiamo per contare: 0, 1,, 3,... e dei quali conosciamo alcune proprietà. Ad esempio sappiamo sommare e moltiplicare due numeri naturali;

Dettagli

Lezione 8 programmazione in Java. Anteprima. La ricorsione. Nicola Drago Dipartimento di Informatica Università di Verona

Lezione 8 programmazione in Java. Anteprima. La ricorsione. Nicola Drago Dipartimento di Informatica Università di Verona Lezione 8 programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Programmazione ricorsiva Fattoriale Somma di n numeri Torre di Hanoi Array

Dettagli