ciao
sto facendo pratica sulla ricorsione , un argomento che proprio non mi va giù
avendo scritto un algoritmo iterativo
codice:
=========
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 ) ;
=======================
ne ho scritto un equivalente ricorsivo con qualche dubbio
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