Recursie in C: Best Practices & Exit Condities
Recursie is het proces van het herhalen van items op een zelfvergelijkende manier. In programmeertalen, als een programma je toestaat om een functie binnen dezelfde functie aan te roepen, dan heet dat een recursieve aanroep van de functie.
void recursie() {
recursie(); /* functie roept zichzelf aan */
}
int main() {
recursie();
}
De C-programmeertaal ondersteunt recursie, d.w.z. een functie die zichzelf aanroept. Maar bij het gebruik van recursie moeten programmeurs voorzichtig zijn om een exit conditie te definiëren vanuit de functie, anders zal het in een oneindige lus gaan.
Recursieve functies zijn erg nuttig om veel wiskundige problemen op te lossen, zoals het berekenen van de faculteit van een getal, het genereren van de Fibonacci-reeks, etc.
Getal Faculteit
Het volgende voorbeeld berekent de faculteit van een gegeven getal met behulp van een recursieve functie:
Live Demo#include <stdio.h>
unsigned long long int faculteit(unsigned int i) {
if(i <= 1) {
return 1;
}
return i * faculteit(i - 1);
}
int main() {
int i = 12;
printf("Faculteit van %d is %d\n", i, faculteit(i));
return 0;
}
Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, produceert het het volgende resultaat:
Faculteit van 12 is 479001600
Fibonacci Reeks
Het volgende voorbeeld genereert de Fibonacci-reeks voor een gegeven getal met behulp van een recursieve functie:
Live Demo#include <stdio.h>
int fibonacci(int i) {
if(i == 0) {
return 0;
}
if(i == 1) {
return 1;
}
return fibonacci(i-1) + fibonacci(i-2);
}
int main() {
int i;
for (i = 0; i < 10; i++) {
printf("%d\t\n", fibonacci(i));
}
return 0;
}
Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, produceert het het volgende resultaat:
0 1 1 2 3 5 8 13 21 34
C Taal
- C# Hello World – Uw eerste C# applicatie bouwen
- C# Keywords en Identifiers begrijpen: Regels, lijsten en best practices
- C# Variabelen & Primitive Datatypes onder de knie krijgen: Complete gids
- C# Operators – Uitgebreide gids voor operators in C#
- C# Bitwise en Bit Shift Operators: Een Uitgebreide Gids
- C# Fundamentals: Invoer en Uitvoer Basis
- C# Expressies, Statements & Blokken: Uitgebreide Gids met Praktische Voorbeelden
- C# Comments Onder de Loep: Types, Best Practices en XML Documentatie
- C# Break Statement: Hoe en Wanneer Te Gebruiken
- C# Continue Statement: Effectief Lusiteraties Overslaan
- C# Arrays: Declaratie, Initialisatie en Operaties