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=24Possiamo 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.
Sfida
FacileDefinisci 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