Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der rekursiven Javascript-Funktionen (mit Beispielen)
Dieser Artikel enthält eine detaillierte Erklärung der rekursiven Funktionen von JavaScript (mit Beispielen). Freunde in Not können darauf verweisen.
Ich habe rekursive Funktionen schon oft gesehen, aber ich hatte nie das Gefühl, dass ich sie vollständig verstanden habe. Dieses Mal hatte ich Zeit, die <
Die rekursive Funktion besteht darin, das zu übergeben Name einer Funktion Nennen Sie Ihre eigene Funktion
Dies ist die Definition im Buch, aber sie ist tatsächlich inkonsistent. Es wird genauso verwirrend sein, wenn Sie auf ähnliche Interviewfragen stoßen
Lass uns zuerst Schauen Sie sich einen Fall im Buch an.
function factorial(num){ if (num <= 1){ return 1; } else { return num * factorial(num-1); } }
Eine klassische faktorielle Rekursion. Dieser Code ist leicht zu verstehen, aber wenn Sie aufgefordert werden, die Rekursion zum Schreiben einer Fakultät zu verwenden, werden sich einige Leute langweilen.
Meine Güte Idee ist
Schritt 1: Den Ausgangspunkt finden
factorial(1) = 1 = 1 //要思考这个递归的起点在哪里,就像阶乘就是1 而累加的话就是0 factorial(2) = 2 * 1 =2 //接着我们试着多写等式然后找出规律 factorial(3) = 3 * 2 * 1 = 6 factorial(4) = 4 * 3 * 2 * 1 = 24
Schritt 2: Funktion zum Ersetzen von Zahlen
// 我们试着将等式右边的实际变量用左边的函数替换 factorial(1) = 1 = 1 factorial(2) = 2 * factorial(1) = 2 factorial(3) = 3 * factorial(2) = 6 factorial(4) = 4 * factorial(3) = 24
Schritt 3: Muster finden
factorial(4) = 4 * factorial(3) = 24 //以的阶乘为例 4! = 4 * 3!(3的阶乘) //而3!其实就是这个函数本身,ta会继续调用递归函数直至调用到factorial(1) //把4替换成参数 factorial(n) = n * factorial(n - 1)
Schritt 4 : In eine rekursive Funktion konvertieren
再看下步骤2 情况1:起点 factorial(1) = 1 = 1 情况2:费起点 factorial(2) = 2 * factorial(1) = 2 factorial(3) = 3 * factorial(2) = 6 factorial(4) = 4 * factorial(3) = 24 所以方法内应该需要两种情况 function factorial(n){ if(n>=1){ return n * factorial(n - 1) }else{ return 1 //起点其实就是递归方法返回的起始值 } }
Wenn es immer noch keine Möglichkeit gibt, diese rekursive Funktion zu verstehen, können wir alle Rekursionen in anonyme Funktionen aufteilen
//我们计算一个4阶乘 fun(4){ return 4 * fun(3) } fun(3){ return 3 * fun(2) } fun(2){ return 2 * fun(1) } fun(1){ return 1 } 你运行fun(4)的时候,一层一层想内访问,访问到fun(1)时候,再讲所有的已知变量计算出结果 fun(4)=>fun(3)=>fun(2)=>fun(1)=>fun(2)=>fun(3)=>fun(4) return 4 * 3 * 2 * 1
Dann benutze meine dumme Methode, um andere Beispiele auszuprobieren, haha , ich sollte in der Lage sein, die meisten Interviewfragen zu beantworten
Chestnuss 1:
//计算1-10之间的和 //fun(0) = 0; //0 //fun(1) = 1; //1 //fun(2) = 2 + fun(1) //3 //fun(3) = 3 + fun(2) //6 //fun(4) = 4 + fun(3) //10 function fun(num){ if(num > 1){ return num + fun(num-1) }else{ return 1 } } fun(10) //55
Lizi 2:
//一共有n格,每步可以走1格或者2格,问一共有多少走法。 // fn(1) = 1 //一个格子的时候只能走一步,所有只有一种走法 // fn(2) = 2 //两个格子的时候,可以一次走1个两步,也可以走2个一步,所以是2种走法,后面就要拿个草稿纸算下了 // fn(3) = 3 // fn(2) + fn(1) // fn(4) = 5 // fn(3) + fn(2) // fn(5) = 8 // fn(4) + fn(3) //规律 :fn(n) = fn(n-1) + fn(n-2) 个人认为所有能做递归函数的,都是有规律可寻的.即便不是很理解其中的原理,但是通过代入数字,也是可以很快发现的这些相同之处,概括成函数的. function fun(num){ if(num == 1){ return 1 }else if(num == 2){ return 2 }else{ return fun(num-1) + fun(num-2) } } fun(5) // 8
Das ist alles, was ich über rekursive Funktionen weiß, falls Sie welche haben rekursive Interviewfragen, Sie können eine Nachricht hinterlassen und sie gemeinsam besprechen, haha
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der rekursiven Javascript-Funktionen (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!