logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaring❗

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

❗Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll

PHP-lessen - les 9 - Recursie

09/10/2025, by Ivan

In de vorige les hebben we het gebruik van functies in PHP besproken. Nu gaan we iets dieper in op hun toepassing. Tot nu toe hebben we functies van dit type bekeken:

<?php
function myFunction(){ // definitie van een functie

}

$x = myFunction(); // aanroep van de functie
?>

Maar wat gebeurt er als we een functie aanroepen binnen de functie zelf?

<?php
function myFunction(){
  $x = myFunction();
  ...
  return $x;
}

$y = myFunction();

Zo’n aanroep van een functie binnen haar eigen lichaam heet recursie. Dat klinkt misschien ingewikkeld in theorie, maar in de praktijk is het vrij eenvoudig.

Laten we een functie maken die een getal verheft tot een macht. Uit de wiskunde weet je vast nog dat een macht betekent dat een getal zichzelf n keer vermenigvuldigt. In PHP ziet dat er zo uit:

<?php
function myDegree($x, $n){
  if($n == 0){
	return 1;
  }
  if($n < 0){
    return myDegree(1/$x, -$n); // -$n keert het teken om van negatief naar positief
  }
  return $x * myDegree($x, $n-1); // functie-aanroep binnen de functie
}

$y = myDegree(2, -4); // eerste functie-aanroep
print $y;
?>

Laten we deze functie stap voor stap bekijken. Allereerst: zodra return wordt uitgevoerd, stopt de functie en geeft ze de opgegeven waarde terug.

De eerste constructie if($n == 0) betekent: als de macht 0 is, retourneer 1. Dat klopt, want elk getal tot de macht nul is 1. Vervolgens, if($n < 0) — als de macht negatief is, maken we de macht positief, maar nemen we het omgekeerde van het getal (1 gedeeld door het getal), wat wiskundig correct is.

Tot slot, als de macht niet 0 of negatief is, roept de functie zichzelf opnieuw aan bij elke vermindering van de macht met 1, terwijl ze het resultaat steeds met $x vermenigvuldigt.

Bekijk de stappen van de functie:

1. Macht = -4, getal = 2.

De tweede if wordt uitgevoerd, het getal wordt omgezet in een breuk, en de macht wordt positief.

2. Macht = 4, getal = 0,5.

De macht is positief en niet nul, dus de functie voert uit:

return $x * myDegree($x, $n-1);

3. Macht = 3, getal = 0,25.

4. Macht = 2, getal = 0,125.

5. Macht = 1, getal = 0,0625.

Hier zal de eerste if worden uitgevoerd en 1 teruggeven. Die 1 wordt vervolgens vermenigvuldigd met de vorige resultaten, en de recursie eindigt.

Een vergelijkbaar voorbeeld is het berekenen van de faculteit van een getal. De faculteit van n is het product van alle getallen van 1 tot n. Dus voor 6 is dat 6×5×4×3×2×1 = 720. En zoals je al kunt raden, gebruiken we hier ook recursie.

<?php
function myRecursion($x){
  if($x == 1){
    return $x;
  }
  return $x * myRecursion($x-1);
}

$y = myRecursion(8);
print $y;
?>

Dit voorbeeld is nog eenvoudiger dan het vorige, dus ik laat het aan jou om te analyseren hoe de parameters van de functie myRecursion veranderen bij elke stap.