la ricorsione simulazione. il main /* programma che usa una funzione ricorsiva*/ #include #define...
TRANSCRIPT
![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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/1.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/2.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/3.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/4.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/5.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/6.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/7.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/8.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/9.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/10.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/11.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/12.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/13.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/14.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/15.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/16.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/17.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/18.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/19.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/20.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/21.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/22.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/23.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/24.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/25.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/26.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/27.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/28.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/29.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/30.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/31.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/32.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/33.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/34.jpg)
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:](https://reader036.vdocuments.pub/reader036/viewer/2022062701/5542eb4e497959361e8bc93f/html5/thumbnails/35.jpg)
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