Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Verwendung der dynamischen JS-Programmierung

Detaillierte Erläuterung der Verwendung der dynamischen JS-Programmierung

php中世界最好的语言
php中世界最好的语言Original
2018-04-14 13:56:421811Durchsuche

Dieses Mal werde ich Ihnen die Verwendung der dynamischen JS-Programmierung ausführlich erklären. Was sind die Vorsichtsmaßnahmen bei der Verwendung der dynamischen JS-Programmierung? Hier sind praktische Fälle.

Tatsächlich werden in unserer Front-End-Entwicklung nicht viele fortgeschrittene Algorithmen verwendet. In den meisten Fällen können if-Anweisungen, for-Anweisungen , swith-Anweisungen usw. verwendet werden gelöst. Wenn es etwas komplizierter ist, könnten Sie darüber nachdenken, es mithilfe der Rekursion zu lösen.

Es sollte jedoch beachtet werden, dass die Rekursion einfach zu schreiben ist, in der Ausführung jedoch nicht sehr effizient ist.

Schauen wir uns noch einmal den dynamischen Programmieralgorithmus an:

Dynamische Programmierlösungen beginnen ganz unten, lösen alle kleinen Probleme und kombinieren sie dann zu einer ganzheitlichen Lösung, um das gesamte große Problem zu lösen.

Beispiel (Fibonacci-Folge berechnen)

Die Fibonacci-Folge bezieht sich auf eine Folge der Zahlen 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946 , 17711, 28657, 46368.....

Diese Sequenz beginnt mit Punkt 3 und jeder Punkt entspricht der Summe der beiden vorherigen Punkte.

Für diese Sequenz können Sie eine rekursive -Funktion verwenden, um den n-ten Elementwert

// 斐波那契数列
function recurFib(n) {
    if(n ");
      return recurFib(n-1)+recurFib(n-2)
    }
}

zu berechnen Es ist in der Tat ein sehr prägnanter Code, der verwendet wird, um auszudrucken, wie oft die Funktion ausgeführt werden muss, wenn n = ist. Eine anspruchsvolle Person kann jedoch auf einen Blick erkennen, dass die Anzahl der Ausführungen mit zunehmendem n zunimmt . Sehr beängstigendes Wachstum.

Detaillierte Erläuterung der Verwendung der dynamischen JS-Programmierung

Wenn n=5, ist der Rekursionsbaum sehr groß geworden ... Es kann vorhergesagt werden, dass, wenn n = 10 oder sogar n = 100 ...

Nachdem wir den Unterschied in der Ausführungseffizienz von rekursiven Funktionen verstanden haben, schauen wir uns an, wie dynamische Programmierung durchgeführt wird

function dynFib(n) {
  let val = [];
  for(let i = 0; i <p style="text-align: left;">
Das Zwischenergebnis wird im Array val gespeichert. Wenn die zu berechnende Fibonacci-Zahl 1 oder 2 ist, dann gibt die if-Anweisung 1 zurück. Andernfalls werden die Werte 1 und 2 an den Positionen 1 und 2 im Val-Array gespeichert. </p><p style="text-align: left;">
Die Schleife geht von 3 zu den Eingabeparametern und ordnet jedes Element des Arrays der Summe der ersten beiden Elemente zu. Wenn die Schleife endet, ist der letzte Elementwert des Arrays der endgültige berechnete Fibonacci-Wert als Rückgabewert <a href="http://www.php.cn/code/6029.html" target="_blank"> der Funktion </a> verwendet werden. </p><p style="text-align: left;">
Als Nächstes können Sie eine einfache Testfunktion schreiben, um die Laufzeit der beiden zu vergleichen. </p><pre class="brush:php;toolbar:false">// 定义一个测试函数,将待测函数作为参数传入
function test(func,n){
  let start = new Date().getTime();//起始时间
  let res = func(n);//执行待测函数
  document.write('<br>'+'当n='+n+'的时候 '+res+'<br>');
  let end = new Date().getTime();//结束时间
  return (end - start)+"ms";//返回函数执行需要时间
}

Ausführung der Druckfunktion

let time = test(recurFib,40);
document.write(time);
let time2 = test(dynFib,40);
document.write(time2);

Die Ergebnisse sind wie folgt:

Detaillierte Erläuterung der Verwendung der dynamischen JS-Programmierung

Schließlich haben Sie vielleicht erkannt, dass es möglich ist, die Fibonacci-Folge ohne Verwendung von Arrays zu berechnen, wenn Sie einen iterativen Ansatz verwenden.

Der Grund, warum Arrays benötigt werden, liegt darin, dass dynamische Programmieralgorithmen normalerweise Zwischenergebnisse speichern müssen.

Das Folgende ist die iterative Version der Bedeutung der Fibonacci-Funktion

function iterFib(n) {
  let last = 1;
  let nextLast = 1;
  let result = 1;
  for (let i = 2; i <p style="text-align: left;">
Natürlich ist die Effizienz dieser iterativen Version dieselbe wie die der Array-Version. </p><p>Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website! </p><p>Empfohlene Lektüre: </p><p><a href="http://www.php.cn/js-tutorial-392657.html" target="_blank">So verwenden Sie die Angular4-Ein- und Ausgabe</a><br></p><p><a href="http://www.php.cn/js-tutorial-392661.html" target="_blank">So bedienen Sie Benutzerberechtigungen in Vue2.0</a><br></p><p style="text-align: left;">
</p><!--content end-->

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der dynamischen JS-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn