Menu
Coddy logo textTech

Funzione ricorsiva

Lezione 8 di 17 del corso Funzioni in C di Coddy.

Una funzione ricorsiva è una funzione che continua a chiamare sé stessa.

Un esempio famoso di questa funzione si ha quando dobbiamo calcolare il fattoriale di un numero. 

La formula è n!=1×2×…×n. 

Per trovare il fattoriale di un numero, dobbiamo moltiplicare tutti i numeri da 1 a n. 

Per esempio:

4!=1×2×3×4=24

Possiamo definire una funzione ricorsiva in questo modo:

int fact(int n) {
   if (n == 1) {
       return 1;
   }
   return n * fact(n - 1);
}

Immagina di avere una scala. Per iniziare a salire, parti dal piano terra (gradino 0). In una funzione ricorsiva, questo punto di partenza è chiamato caso base. È il punto in cui la funzione smette di chiamare sé stessa e restituisce un valore.

Nell'esempio del fattoriale, il caso base si verifica quando nnn (il numero) è 1. Il fattoriale di 1 è semplicemente 1, quindi la funzione restituisce 1 senza effettuare altri calcoli.

Per prima cosa, si verifica se il numero è uguale a uno:

if (n == 1) {
   return 1;
}

Chiamate ricorsive:

 

Per qualsiasi numero maggiore di 1, la funzione si basa su versioni più piccole di sé stessa. Si richiama con n−1 (un gradino più in basso). Questa è la chiamata ricorsiva:

return n * fact(n - 1);

Pensa a come si salgono le scale. Per raggiungere il gradino 5, devi prima raggiungere il gradino 4, poi il gradino 3 e così via. Ogni chiamata ricorsiva equivale a fare un gradino.

challenge icon

Sfida

Facile

Definisci la funzione ricorsiva:

  • Scrivi una funzione chiamata countdown che accetta un parametro intero n.
  • All'interno di questa funzione, stampa il valore corrente di n.
  • Se n è maggiore di 0, chiama ricorsivamente countdown con n - 1.
  • Se n è 0 o inferiore, stampa "Blastoff!".

Esempio: se il numero è 3, l'output dovrebbe essere simile a questo:

3
2
1
Blastoff!

 

Provalo tu

#include <stdio.h>

// Define the function countdown


int main() {
  int start = 5;
  // Call the function
  
 
  return 0;
}

Tutte le lezioni di Funzioni in C

Esercitati da solo: Compilatore C online