/* File: ricorsio.c */
/* Time-stamp: "2001-03-26 01:47:17 calvanes" */
/* Scopo: primo esempio di funzione ricorsiva */

#include <stdio.h>

void ricorsiva(int i)
{
  printf("Sono ricorsiva(%d)", i);
  if (i == 0)
    printf(" - Ho finito\n");
  else {
    printf(" - Attivo ricorsiva(%d)\n", i-1);
    ricorsiva(i-1);
    printf("Sono di nuovo ricorsiva(%d)", i);
    printf(" - Ho finito\n");
  }
  return;
}

int main(void)
{
  int j;

  printf("Sono main()\n");
  printf("Inserisci un intero non negativo: ");
  scanf("%d", &j);
  printf(" - Attivo ricorsiva(%d)\n", j);
  ricorsiva(j);
  printf("Sono di nuovo main()");
  printf(" - Ho finito\n");
  return 0;
}

/* output

Sono main()
Inserisci un intero non negativo: 2
 - Attivo ricorsiva(2)
Sono ricorsiva(2) - Attivo ricorsiva(1)
Sono ricorsiva(1) - Attivo ricorsiva(0)
Sono ricorsiva(0) - Ho finito
Sono di nuovo ricorsiva(1) - Ho finito
Sono di nuovo ricorsiva(2) - Ho finito
Sono di nuovo main() - Ho finito

*/