ciao
sto facendo pratica sulla ricorsione , un argomento che proprio non mi va giù
avendo scritto un algoritmo iterativo
ne ho scritto un equivalente ricorsivo con qualche dubbiocodice:========= int main () { int a ; /* base */ int n ; /* limite */ int i ; /* contatore */ int j ; /* contatore */ int sommatoria = 0 ; int potenza ; printf (" inserisci la base \n \n" ) ; scanf ("%d" , &a ) ; printf (" inserisci il limite \n \n" ) ; scanf ("%d" , &n ) ; for ( i = 0 ; i <= n ; i++ ) { for ( j = 0 ; j < 1 ; j++ ) { if ( i == 0 ) potenza = 1 ; else potenza *= a ; } sommatoria += potenza ; } printf ("potenza is %d \n \n " , potenza ) ; printf (" la sommatoria e %d \n\n" , sommatoria ) ; =======================
codice:int ricSomma ( int n , int lim) { if ( lim == 0 ) return 1 ; else return 1+ n * ricSomma ( n , lim - 1 ) ; }
nella chiamata ricorsiva della funzione ricSomma ho specificato casualmente "+ 1 "
ora la mia domanda è :
che cosa restituisce la funzione a ogni chiamata ricorsiva ?
qual'è la sequenza di attivazione nello stack?
ad es il fattoriale di 5! calcolato in modo ricorsivo restituirebbe
5 * 4!
4 * 3!
3 * 2!
2 * 1!
1
1*2
3*2
4*6
5*24
= 120
nel caso della mia funzione però c'è un pezzo che mi manca alla comprensione!
mi potreste aiutare ?
grazie

Rispondi quotando