La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define...
-
Upload
samanta-scotti -
Category
Documents
-
view
214 -
download
0
Transcript of La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define...
La ricorsione
Simulazione
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”);
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);
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
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
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à
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)
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)
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
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)
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)
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
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)
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)
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
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)
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)
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
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)
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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