Basi della ricorsione
Fa parte della sezione Fondamenti del percorso C di Coddy. Lezione 50 di 63.
La ricorsione è una tecnica in cui una funzione richiama sé stessa per risolvere un problema. È come risolvere un problema grande suddividendolo in problemi più piccoli e simili.
Esaminiamo una semplice funzione ricorsiva che calcola il fattoriale:
int factorial(int n) {
// Caso base: il fattoriale di 0 o 1 è 1
if (n <= 1) {
return 1;
}
// Caso ricorsivo: n! = n * (n-1)!
return n * factorial(n - 1);
}Ogni funzione ricorsiva ha bisogno di:
- Un caso base per interrompere la ricorsione
- Un caso ricorsivo che si avvicina al caso base
Ad esempio, calcolare factorial(3):
- factorial(3) chiama factorial(2)
- factorial(2) chiama factorial(1)
- factorial(1) restituisce 1 (caso base)
- factorial(2) restituisce 2 * 1 = 2
- factorial(3) restituisce 3 * 2 = 6
Sfida
FacileCrea una funzione chiamata sumToN che utilizzi la ricorsione per calcolare la somma dei numeri da 1 a n.
Per esempio:
- sumToN(3) dovrebbe restituire 6 (1 + 2 + 3)
- sumToN(5) dovrebbe restituire 15 (1 + 2 + 3 + 4 + 5)
La tua funzione dovrebbe:
- Usare un caso base quando n è 1 (restituire 1)
- Altrimenti, restituire n più la somma dei numeri da 1 a (n-1)
Provalo tu
#include <stdio.h>
// Scrivi qui la tua funzione sumToN
// Non modificare la funzione main()
int main() {
int n;
scanf("%d", &n);
printf("%d", sumToN(n));
return 0;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Flusso di controllo
Istruzione ifIf-ElseElse-IfSwitch CaseOperatore condizionale ternarioSfida di riepilogoIf-Else annidato7Funzioni
Dichiarare una funzioneTipi di ritornoParametriSfida di riepilogo n. 1Basi della ricorsionePrototipi di funzioneSfida di riepilogo n. 22Variabili
Tipi di datiInteroFloat - DoubleCaratteriValori booleaniCostantiFondamenti di printfRegole di denominazione delle variabiliConversione di tipo parte 1Conversione di tipo parte 2Sfida di ripasso3Operatori
Operatori aritmeticiOperatore moduloIncremento/DecrementoOperatori di assegnazioneOperatori relazionaliOperatori logici Parte 1Operatori logici Parte 2Operatori logici Parte 3Sfida di riepilogoEsercitati da solo: Compilatore C online