C Academy · Les

Klassieke recursieve problemen

Faculteit en Fibonacci.

Les 2 van 413 stappen

Klassieke recursieve problemen is een gratis C Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C Academy bevat in totaal 4 lessen.

Klassieke problemen

Sommige problemen lenen zich van nature voor recursie. Als u de klassieke voorbeelden leert, krijgt u patronen die u opnieuw kunt gebruiken.

In deze les behandelen we faculteit, Fibonacci, de som van cijfers, de grootste gemene deler en het omkeren van uitvoer.

Faculteit

De faculteit van n is n maal de faculteit van n min 1, waarbij 1! gelijk is aan 1.

Dit is recursie volgens het schoolboek: een duidelijk basisgeval en één recursieve aanroep.

#include <stdio.h>

long factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

int main(void) {
    printf("%ld\n", factorial(6));
    return 0;
}

Fibonacci-getallen

Elk Fibonacci-getal is de som van de twee voorgaande getallen. De recursieve definitie heeft twee basisgevallen nodig: fib(0)=0 en fib(1)=1.

Deze versie doet per stap twee aanroepen.

int fib(int n) {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

Fibonacci uitvoeren

Hier is het volledige programma. fib(10) hoort 55 af te drukken.

Let op: deze eenvoudige versie herhaalt werk en is daarom traag voor grote waarden van n.

#include <stdio.h>

int fib(int n) {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

int main(void) {
    printf("%d\n", fib(10));
    return 0;
}

Som van cijfers

Om de cijfers van een getal op te tellen, haalt u het laatste cijfer op met n % 10 en past u recursie toe op de rest met n / 10.

Het basisgeval is bereikt wanneer n 0 wordt.

int digit_sum(int n) {
    if (n == 0) return 0;
    return (n % 10) + digit_sum(n / 10);
}

Cijfersom in actie

Voor 1234 is de som 1+2+3+4 = 10. Laten we dit met een volledig programma bevestigen.

#include <stdio.h>

int digit_sum(int n) {
    if (n == 0) return 0;
    return (n % 10) + digit_sum(n / 10);
}

int main(void) {
    printf("%d\n", digit_sum(1234));
    return 0;
}

Grootste gemene deler

Het algoritme van Euclides leent zich van nature voor recursie. De grootste gemene deler van a en b is gelijk aan de grootste gemene deler van b en a % b.

Wanneer b 0 wordt, is a het antwoord.

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

Volledig programma voor de grootste gemene deler

De grootste gemene deler van 48 en 18 is 6. Dit programma drukt die af.

#include <stdio.h>

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

int main(void) {
    printf("%d\n", gcd(48, 18));
    return 0;
}

Een getal omkeren

Recursie kan ook uitvoer aansturen. Door het laatste cijfer pas na de recursieve aanroep af te drukken, keert u op natuurlijke wijze de verwerkingsvolgorde om.

Deze hulpfunctie drukt elk cijfer van een getal afzonderlijk af met behulp van recursie.

#include <stdio.h>

void print_digits(int n) {
    if (n == 0) return;
    print_digits(n / 10);
    printf("%d ", n % 10);
}

int main(void) {
    print_digits(729);
    printf("\n");
    return 0;
}

Machtsfunctie

Ook machtsverheffen is recursief: base^exp is gelijk aan base maal base^(exp-1).

Het basisgeval is exponent 0, dat 1 retourneert.

long power(int base, int exp) {
    if (exp == 0) return 1;
    return base * power(base, exp - 1);
}

Patronen die je opnieuw gebruikt

Let op de gemeenschappelijke structuur: controleer een basisgeval en combineer daarna de huidige stap met het resultaat van een kleinere aanroep.

Als je dit patroon eenmaal herkent, worden veel problemen korte recursieve functies.

Korte controle

Kies de juiste basisgevallen.

Samenvatting

Faculteit, Fibonacci, cijfersom, GGD en machtsverheffen gebruiken allemaal hetzelfde recursieve patroon: handel het basisgeval af en combineer daarna de huidige waarde met een kleiner deelprobleem.

Je kunt deze sjablonen ook voor veel andere taken gebruiken.

Gratis beginnen

Leer C met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
39
Lessen
144

Veelgestelde vragen

Is de les “Klassieke recursieve problemen” gratis?

Ja — de volledige tekst van “Klassieke recursieve problemen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C Academy bevat in totaal 4 lessen.

Wat leer ik in “Klassieke recursieve problemen”?

Faculteit en Fibonacci. Je oefent met C Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met C Academy te beginnen?

Ervaring vooraf is niet nodig. C Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Klassieke recursieve problemen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over C Academy?

Ja. Elke les over C Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Hoe recursie werkt
  2. Klassieke recursieve problemen
  3. Recursie versus iteratie
  4. Stack overflow voorkomen
← Terug naar C Academy