JavaScript recursieve functie
samenvatting: in deze handleiding leert u hoe u de recursieve techniek kunt gebruiken om een JavaScript recursieve functie te ontwikkelen, een functie die zichzelf aanroept.
Inleiding tot de JavaScript recursieve functies
een recursieve functie is een functie die zichzelf aanroept totdat het niet meer gebeurt. en deze techniek wordt recursie genoemd.
stel dat u een functie hebt genaamd recurse()
. De recurse()
is een recursieve functie als het zichzelf in zijn lichaam aanroept, als volgt:
Code language: JavaScript (javascript)function recurse() { // ... recurse(); // ...}
een recursieve functie heeft altijd een voorwaarde om te stoppen met zichzelf aan te roepen, anders zal het zichzelf onbeperkt aanroepen. Een recursieve functie ziet er dus meestal als volgt uit:
Code language: JavaScript (javascript)function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
over het algemeen worden recursieve functies gebruikt om een groot probleem op te splitsen in kleinere. U kunt vinden dat ze zwaar worden gebruikt in de datastructuren zoals binaire bomen en grafieken en algoritmen zoals binair zoeken en quicksort.
Javascript recursieve functievoorbeelden
laten we enkele voorbeelden nemen van het gebruik van de recursieve functies.
1) Een eenvoudige JavaScript recursieve functie voorbeeld
stel dat u een functie moet ontwikkelen die aftelt van een opgegeven getal naar 1. Om bijvoorbeeld af te tellen van 10 naar 1:
321
het volgende toont de countDown()
functie:
Code language: JavaScript (javascript)function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
Deze countDown(3)
toont alleen het nummer 3.
om af te tellen van het getal 3 naar 1, kunt u:
- toon het getal 3.
- en roep de
countDown(2)
aan die het nummer 2 toont. - en roep de
countDown(1)
aan die het nummer 1 toont.
de volgende veranderingen veranderen de countDown()
naar een recursieve functie:
Deze countDown(3)
zal draaien totdat de aanroepstackgrootte wordt overschreden, als volgt:
Code language: JavaScript (javascript)Uncaught RangeError: Maximum call stack size exceeded.
… omdat het niet de voorwaarde heeft om te stoppen met aanroepen.
het aftellen zal stoppen wanneer het volgende getal nul is, daarom voegen we als volgt een if-voorwaarde toe:
Output:
321
de countDown()
lijkt te werken zoals verwacht.
echter, zoals vermeld in de functietype tutorial, is de naam van de functie een verwijzing naar het eigenlijke function object.
als ergens in de code de functienaam is ingesteld op null, zal de recursieve functie stoppen met werken.
bijvoorbeeld, de volgende code zal resulteren in een fout:
Code language: JavaScript (javascript)let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
fout:
Code language: JavaScript (javascript)Uncaught TypeError: countDown is not a function
hoe het script werkt:
- wijs eerst de functienaam
countDown
toe aan de variabelenewYearCountDown
. - ten tweede, stel de
countDown
functieverwijzing in naarnull
. - Ten derde, roep de functie
newYearCountDown
aan.
de code veroorzaakt een fout omdat de inhoud van de countDown()
functie verwijst naar de countDown
functienaam die op null
was ingesteld op het moment dat de functie werd aangeroepen.
om het te repareren, kunt u een benoemde functie-expressie als volgt gebruiken:
2) Bereken de som van cijfers van een getal voorbeeld
gegeven een getal bijvoorbeeld 324, bereken de som van cijfers 3 + 2 + 4 = 9.
Om de toepassing van de recursieve techniek, kunt u de volgende stappen uit:
f(324) = 4 + f(32)f(32) = 2 + f(3)f(3) = 3 + 0 (stop here)
Dus
f(324) = 4 + f(32) f(324) = 4 + 2 + f(3) f(324) = 4 + 2 + 3
het volgende voorbeeld illustreert Het sumOfDigits()
recursieve functie:
Hoe het werkt:
Overzicht
- Een recursieve functie is een functie die zichzelf aanroept tot het niet
- Een recursieve functie heeft altijd een voorwaarde dat stopt de functie die zichzelf aanroept.
- Was deze tutorial nuttig ?
- YesNo