2017-12-31 40 views
-6

So führen Sie nur einmal in einer Javascript-Rekursion.Führen Sie etwas einmal in einer rekursiven JavaScript-Funktion

Lassen Sie mich meine Frage mit der factorial Funktion erklären

ich nur einmal erste Zeile ausgeführt werden soll.

Ich habe verschiedene Anwendungsfälle nicht diese. Und ich weiß sehr gut, dass ich factorial(n=1)

function factorial(n) { 
    n = n || 1 //This Line 
    if ((n == 0) || (n == 1)) { 
     return 1 
    } 
    return factorial(n - 1); 
} 

Antwort

1

tun kann Es ist oft hilfreich, eine Funktion wickeln verwendet, um etwas rekursiv in einer äußeren Funktion zur Beurteilung des API sauberer zu machen:

function factorial(n) { 
    function compute(n) { 
    if (n === 0 || n === 1) 
     return 1; 
    return n * compute(n - 1); 
    } 
    return compute(n || 1); 
} 

Nun ist die n || 1 Initialisierung passiert einmal, wenn die innere compute() Funktion aufgerufen wird.

Das Erstellen eines solchen Wrappers ist für einige kombinatorische Algorithmen noch nützlicher ("finde alle Kombinationen ..." usw.).

Verwandte Themen