La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define...

35
La ricorsione Simulazione

Transcript of La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define...

Page 1: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

La ricorsione

Simulazione

Page 2: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Il Main/* Programma che usa una funzione ricorsiva*/#include <stdio.h>#define MAX_N 8main()int valore, dato;printf(“Introduci n: “);scanf(“%d”, &dato);if(n < MAX_N) valore = fatt(dato); printf(“%d! = %d\n”, n, valore); else printf(“Errore: valore troppo grande\n”);

Page 3: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

La funzione ricorsiva fatt

int fatt( int n)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Page 4: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Esecuzione del Main/* Programma che usa una funzione ricorsiva*/#include <stdio.h>#define MAX_N 8main()int valore, dato;printf(“Introduci n: “); scanf(“%d”, &dato);if(n < MAX_N) valore = fatt(dato); printf(“%d! = %d\n”, n, valore); else printf(“Errore: valore troppo grande\n”);

visualizzazione prompt

Page 5: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Esecuzione del Main/* Programma che usa una funzione ricorsiva*/#include <stdio.h>#define MAX_N 8main()int valore, dato;printf(“Introduci n: “); scanf(“%d”, &dato);if(n < MAX_N) valore = fatt(dato); printf(“%d! = %d\n”, n, valore); else printf(“Errore: valore troppo grande\n”);

lettura dato = 4

Page 6: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Esecuzione del Main/* Programma che usa una funzione ricorsiva*/#include <stdio.h>#define MAX_N 8main()int valore, dato;printf(“Introduci n: “); scanf(“%d”, &dato);if(n < MAX_N) valore = fatt(dato); printf(“%d! = %d\n”, n, valore); else printf(“Errore: valore troppo grande\n”);

test validità

Page 7: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Esecuzione del Main/* Programma che usa una funzione ricorsiva*/#include <stdio.h>#define MAX_N 8main()int valore, dato;printf(“Introduci n: “); scanf(“%d”, &dato);if(n < MAX_N) valore = fatt(dato); printf(“%d! = %d\n”, n, valore); else printf(“Errore: valore troppo grande\n”);

chiama fatt(4)

Page 8: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.1 della funzione fatt

int fatt( int n) int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Fatt (n=4)

Page 9: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.1 della funzione fatt

int fatt( int n) (n=4)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

test non verificato

Page 10: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.1 della funzione fatt

int fatt( int n) (n=4)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Chiama fatt(3)

Page 11: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.2 della funzione fatt

int fatt( int n) int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

fatt(n=3)

Page 12: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.2 della funzione fatt

int fatt( int n) (n=3)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Test non verificato

Page 13: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.2 della funzione fatt

int fatt( int n) (n=3)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Chiama fatt(2)

Page 14: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.3 della funzione fatt

int fatt( int n) int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

fatt(n=2)

Page 15: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.3 della funzione fatt

int fatt( int n) (n=2)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Test non verificato

Page 16: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.3 della funzione fatt

int fatt( int n) (n=2)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Chiama fatt(1)

Page 17: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.4 della funzione fatt

int fatt( int n) int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

fatt(n=1)

Page 18: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.4 della funzione fatt

int fatt( int n) (n=1)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Test non verificato

Page 19: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.4 della funzione fatt

int fatt( int n) int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Chiama fatt(0)

Page 20: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.5 della funzione fatt

int fatt( int n) int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

fatt(n=0)

Page 21: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.5 della funzione fatt

int fatt( int n) (n=0)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Test verificato

Page 22: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.5 della funzione fatt

int fatt( int n) (n=0)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

n_fatt = 1

Page 23: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.5 della funzione fatt

int fatt( int n) (n=0)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Viene restituito n_fatt = 1

Page 24: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.5 della funzione fatt

int fatt( int n) (n=0)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt); Con l’esecuzione del return,

l’istanza attuale scompare

Page 25: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.4 della funzione fatt

int fatt( int n) (n=1)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

n_fatt = 1 1 = 1

Page 26: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.4 della funzione fatt

int fatt( int n) (n=1)

int n_fatt;

if(n == 0)

n_fatt = 1;

else

n_fatt = n fatt(n-1);return(n_fatt);

Viene restituito n_fatt = 1

Page 27: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.3 della funzione fatt

int fatt( int n) (n=2)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

n_fatt = 2 1 = 2

Page 28: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.3 della funzione fatt

int fatt( int n) (n=2)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Viene restituito n_fatt = 2

Page 29: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.2 della funzione fatt

int fatt( int n) (n=3)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

n_fatt = 3 2 = 6

Page 30: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.2 della funzione fatt

int fatt( int n) (n=3)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Viene restituito n_fatt = 6

Page 31: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.1 della funzione fatt

int fatt( int n) (n=4)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

n_fatt = 4 6 = 24

Page 32: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Istanza n.1 della funzione fatt

int fatt( int n) (n=4)int n_fatt;if(n == 0) n_fatt = 1;else n_fatt = n fatt(n-1);return(n_fatt);

Viene restituito n_fatt = 24

Page 33: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Esecuzione del Main/* Programma che usa una funzione ricorsiva*/#include <stdio.h>#define MAX_N 8main()int valore, dato;printf(“Introduci n: “); scanf(“%d”, &dato);if(n < MAX_N) valore = fatt(dato); printf(“%d! = %d\n”, n, valore); else printf(“Errore: valore troppo grande\n”);

valore = 24

Page 34: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Esecuzione del Main/* Programma che usa una funzione ricorsiva*/#include <stdio.h>#define MAX_N 8main()int valore, dato;printf(“Introduci n: “); scanf(“%d”, &dato);if(n < MAX_N) valore = fatt(dato); printf(“%d! = %d\n”, n, valore); else printf(“Errore: valore troppo grande\n”);

stampa: 4! = 24

Page 35: La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:

Esecuzione del Main/* Programma che usa una funzione ricorsiva*/#include <stdio.h>#define MAX_N 8main()int valore, dato;printf(“Introduci n: “); scanf(“%d”, &dato);if(n < MAX_N) valore = fatt(dato); printf(“%d! = %d\n”, n, valore); else printf(“Errore: valore troppo grande\n”);

Fine programma