C recursie
C-recursie
In deze tutorial leer je recursieve functies te schrijven in C-programmering aan de hand van een voorbeeld.
Een functie die zichzelf aanroept, staat bekend als een recursieve functie. En deze techniek staat bekend als recursie.
Hoe werkt recursie?
void recurse() { ... .. ... recurse(); ... .. ... } int main() { ... .. ... recurse(); ... .. ... }
De recursie gaat door totdat aan een voorwaarde is voldaan om dit te voorkomen.
Om oneindige recursie te voorkomen, kan de instructie if...else (of vergelijkbare benadering) worden gebruikt waarbij de ene branch de recursieve aanroep doet en de andere niet.
Voorbeeld:som van natuurlijke getallen met behulp van recursie
#include <stdio.h>
int sum(int n);
int main() {
int number, result;
printf("Enter a positive integer: ");
scanf("%d", &number);
result = sum(number);
printf("sum = %d", result);
return 0;
}
int sum(int n) {
if (n != 0)
// sum() function calls itself
return n + sum(n-1);
else
return n;
}
Uitvoer
Enter a positive integer:3 sum = 6
Aanvankelijk was de sum()
wordt gebeld vanaf de main()
functie met nummer doorgegeven als argument.
Stel dat de waarde van n binnen sum()
is in eerste instantie 3. Tijdens de volgende functieaanroep wordt 2 doorgegeven aan de sum()
functie. Dit proces gaat door tot n is gelijk aan 0.
Wanneer n is gelijk aan 0, de if
voorwaarde mislukt en de else
deel wordt uitgevoerd en retourneert de som van gehele getallen uiteindelijk naar de main()
functie.
Voor- en nadelen van recursie
Recursie maakt het programma elegant. Als prestaties echter van vitaal belang zijn, gebruik dan in plaats daarvan loops, omdat recursie meestal veel langzamer is.
Dat gezegd hebbende, recursie is een belangrijk concept. Het wordt vaak gebruikt in datastructuur en algoritmen. Het is bijvoorbeeld gebruikelijk om recursie te gebruiken bij problemen zoals het doorkruisen van bomen.
C Taal
- C# Hello World - Uw eerste C#-programma
- C#-zoekwoorden en -ID's
- C#-variabelen en (primitieve) gegevenstypen
- C#-operators
- C# Bitsgewijze en Bit Shift-operators
- C# Basisinvoer en -uitvoer
- C#-expressies, statements en blokken (met voorbeelden)
- C# Opmerkingen
- C# switch-instructie
- C# ternair (? :) Operator
- Fibonacci-serie in Java met behulp van het programma voor recursie en lussen