6 . Metodologia top-down e sottoprogrammi Versione 5.0 – Aprile 2023
Ora si deve eseguire nuovamente la funzione per il valore num -1 ossia 4 e così via : avremo in sintesi nello stack il salvataggio delle seguenti informazioni :
push |
push |
push |
push |
push |
1 ° |
2 ° |
3 ° |
4 ° |
pass . |
pass . |
pass . |
pass . |
5 ° pass .
6 ° passaggio Esecuzione dei calcoli pop
1 |
|
|
|
|
1 |
1 |
|
|
|
2 |
2 |
2 |
|
|
3 |
3 |
3 |
3 |
|
4 |
4 |
4 |
4 |
4 |
5 |
5 |
5 |
5 |
5 |
5 |
N . B . In realtà la sequenza delle chiamate alla funzione ricorsiva attivate dalla chiamata del programma chiamante è la seguente :
f � Fattoriale ( 5 ) 1 ° call ricorsiva f � 5 * Fattoriale ( 4 ) 2 ° call ricorsiva f � 5 * ( 4 * Fattoriale ( 3 ) ) 3 ° call ricorsiva f � 5 * ( 4 * ( 3 * Fattoriale ( 2 ) )) 4 ° call ricorsiva f � 5 * ( 4 * ( 3 * ( 2 * Fattoriale ( 1 ) ))) 5 ° call ricorsiva f � 5 * ( 4 * ( 3 * ( 2 * ( 1 * Fattoriale ( 0 ) )))) 6 ° call ricorsiva f � 5 * ( 4 * ( 3 * ( 2 * ( 1 * 1 ))))
Alla fine delle chiamate ricorsive viene seguito il calcolo al contrario ossia eseguendo i prodotti a partire da quello più interno risalendo verso quello più esterno ossia
1 * 1 = 1 1 * 2 = 2 2 * 3 = 6 6 * 4 = 24 24 * 5 = 120
Pag . 25