Heim > Web-Frontend > js-Tutorial > Zusammenfassung gängiger Beispiele für JS-Algorithmen

Zusammenfassung gängiger Beispiele für JS-Algorithmen

php中世界最好的语言
Freigeben: 2018-05-22 15:03:17
Original
1480 Leute haben es durchsucht

Dieses Mal werde ich Ihnen eine Zusammenfassung gängiger JS-Algorithmusbeispiele geben. Was sind die Vorsichtsmaßnahmen bei der Verwendung gängiger JS-Algorithmen? Hier sind praktische Fälle.

Akkumulieren und akkumulieren

Akkumulieren: Fügen Sie einer Variablen eine Reihe von Daten hinzu. Abschließend erhält man das kumulative Ergebnis

Zum Beispiel: Berechnen Sie die kumulative Summe der Zahlen von 1 bis 100

Der Ball fällt aus großer Höhe und kehrt jedes Mal auf die Hälfte des ursprünglichen Wertes zurück. Finden Sie heraus, wann der Ball zum zehnten Mal landet.

<script>
 var h=100;
 var s=0;
 for(var i=0;i<10;i++){
  h=h/2;
  s+=h;
 }
 s=s*2+100;
</script>
Nach dem Login kopieren

Akkumulation: Multiplizieren Sie eine Reihe von Daten mit einer Variablen, um das kumulative Ergebnis zu erhalten.

Die übliche ist die Fakultät von n

var n=100;
var result= 1;
for(var i=1;i<=n;i++){
 result *=i;
}
Nach dem Login kopieren

Allgemeine Form:

Akkumulation: V +=e;

Akkumulation: v*=e;

V steht für Akkumulation und Akkumulation, e steht für Akkumulation/Akkumulationsterm

Algorithmuspunkte:

(1) Initialisierung

Initialisieren v und e

Akkumulation: v = 0;

Akkumulation: v = 1;

Initialisierung von e, wenn der Akkumulations-/Produktterm komplex ist, kann er zerlegt werden In mehrere Unterbegriffe getrennt initialisieren, wie zum Beispiel das Problem der Berechnung von Pi, wird der kumulative Begriff in drei Teile zerlegt: Symbol, Zähler und Nenner.

(2) Schleifensteuerungsbedingungen

Eine davon ist eine feste Anzahl von Malen, z. B. das Problem der Berechnung der Sprungentfernung oder das Problem der Berechnung der Summe der ersten 20 Elemente der Sequenz ,

mal Es ist nicht festgelegt, muss aber eine bestimmte Bedingung erfüllen: Das Problem der Berechnung von Pi erfordert, dass der Absolutwert des letzten Termes kleiner als 10-6 ist.

(3) Bestimmen Sie die Änderung des Akkumulations-/Produktterms

Zum Beispiel ist die Summe der ersten 20 Terme einer Sequenz die Summe des aktuellen Zählers und Nenners als zu verwenden nächster Nenner und der aktuelle Nenner als Zähler.

Ein weiteres Beispiel besteht darin, den Umfang von Pi zu ermitteln. Kehren Sie das Vorzeichen um, addieren Sie 2 zum Nenner und ermitteln Sie dann den nächsten Term.

Iteration

Die Iterationsmethode ist auch die Wurfmethode

Regel: Es kann sein Kontinuierlich verwendet Der alte Wert erhält den neuen Wert, bis wir das gewünschte Ergebnis erhalten.

So lösen Sie das Iterationsproblem

1. Finden Sie die Iterationsvariable (alter Wert)

Bestimmen Sie die Beziehung zwischen Iterationen

3 was das gewünschte Ergebnis ist (Bedingungen zum Beenden der Schleife)

(1) ist das Endergebnis zu kennen

(2) Die Anzahl der Schleifen

<script>
 /*
 * 1.接受用户输入的俩个数
 * 2.一个函数的到最大公约数
 * 3.打印这个最大公约数*/
 var num1 = Number(prompt("请输入一个数"));
 var num2 = Number(prompt("请输入一个数"));
 var result = GCD(num1,num2);
 alert(result);
 /*
 * 函数的功能:得到最大公约数
 * 函数名:GCD
 * 函数的参数:俩个整数
 * 返回值:最大公约数*/
 /*
 * 如果num1<num2则交换,确保num1是交大的
 * 计算余数
 * 当num1(除数),对num2(被除数)的余数不为0,重复一下步骤
 * num2=>num1,
 * 余数=>num2
 * 重新计算余数
 * 最终的到最大公约数,也就是num2的值*/
 function GCD(num1,num2){
  /*return0;*/
  if(num1<num2){
   var t = num1;
   num1=num2;
   num2 = t;
  }
  var remainder = num1%num2;
  while(remainder!= 0){
   num1=num2;
   num2= remainder;
   remainder=num1%num2;
  }
  returnnum2;
 }
</script>
Nach dem Login kopieren

Rekursion

Finden Sie die mathematische Regel: Berechnen Sie den Wert des nächsten Elements mithilfe der Formel, bis das gewünschte Ergebnis erzielt wird

Zum Beispiel: Ein Kaninchen gebiert: durch die ersten beiden Das Element erhält das nächste Element

<script>
 /*
 * 一般而言,兔子在出生俩个月后,就有繁殖能力
 * 一对兔子每个月能生出一对小兔子来
 * 如果所有的兔子都不死,那么一年以后总共有多少对兔子*/
 /*
 * 月份 0 1 2 3 4 5 6
 * 幼崽 1 1 1 2 3 5 8
 * 成年 0 0 1 1 2 3 5
 * 总共 1 1 2 3 5 8 13
 * */
 /*
 * 接收用户输入的月份
 * 计算兔子的对数
 * (1)如果经过的月份<2那么兔子的对数为1
 * (2)否则用初始的兔子的对数 加上 第一个月的对数为
 * 第二个月兔子的个数(an = an-1 +an-2)
 * 反复使用这个公式,计算出下个月兔子的个数一直到用户输入的月份为止
 * 打印的兔子的对数
 * */
 /* var month = Number(prompt("输入月份"));
  var sum ;
  var an =1;
  var an_1=1;
  var an_2;
  if(month < 2){
  sum=1;
  }else{
  sum=2;
  for(var i=1; i<month; i++){
  sum= an +an_1;
  an_1 =an;
  an = sum;
  }
  }
  alert(sum);*/
 /*
 * 思路2*/
 var month = Number(prompt("输入月份"));
 var rabbit = [1,1];
 for(var m=2;m<=month;m++){
  rabbit[m]=rabbit[m-1]+rabbit[m-2];
 }
 alert(rabbit[month]);
</script>
Nach dem Login kopieren

Die Rekursion ist in Vorwärts- und Rückwärtsbewegung unterteilt.

Erschöpfung

Wenn Sie auf ein Problem stoßen und keine bessere Lösung finden können (keine mathematische Formel oder Regel finden), Verwenden Sie die „dümmste“ Methode, nutzen Sie die hohe Rechengeschwindigkeit von Computern, listen Sie alle Möglichkeiten auf

und notieren Sie die Ergebnisse, die wir erhalten möchten

<script>
 /*
 * 公鸡一值钱5,鸡母一值钱三,鸡仔三值钱一
 * 百钱买百鸡,问公鸡,鸡母、鸡仔各几何?
 * x y z
 * x + y + z = 100
 * x*5 + y * 3 + z/3 = 100*/
 for(var cock=0;cock<=20;cock++){
  for(var hen=0;hen<=33;hen++){
   var chihen=100-cock-hen;
   if(100== cock*5+ hen*3+ chihen/3){
    document.write("公鸡一共:"+cock+"鸡母一共:"+hen+"小鸡一共:"+chihen+"<br>")
   }
  }
 }
</script>
Nach dem Login kopieren

Erschöpfende Methode. Seine Eigenschaften sind: Der Algorithmus ist einfach und das entsprechende Programm ist auch einfach, aber der Rechenaufwand ist oft groß. Der Vorteil von Computern liegt jedoch in ihrer hohen Rechengeschwindigkeit, sodass dieser Algorithmus seine Stärken maximieren und Schwächen vermeiden und oft gute Ergebnisse erzielen kann.

Fall: Es gibt eine dreistellige Zahl, die Einerstelle ist größer als die Hunderterstelle und die Hunderterstelle ist größer als die Zehnerstelle und die Summe der Stellen ist gleich dem Produkt der Multiplikation der Ziffern, finde diese drei Ziffern

Rekursion

Die sogenannte Rekursion besteht darin, sich selbst innerhalb der Funktion aufzurufen.

Um beispielsweise das faktorielle Problem zu finden, wird die Faktenfunktion innerhalb der Faktenfunktion aufgerufen

<script>
 /*计算n的阶乘*/
 function fact(n){
  if(1== n){
   return 1
  }
   return n*fact(n-1);
 }
 alert(fact(5));
</script>
Nach dem Login kopieren

Der rekursive Algorithmus ist nach herkömmlicher Denkweise sehr kompliziert zu verstehen, und die Funktionsaufrufe sind es auch Wenn Sie Schicht für Schicht verschachteln und dann Schicht für Schicht zurückgeben, können Sie Ihre Meinung auch ändern, um die Rekursion zu verstehen.

Rekursion löst eigentlich ein Problem der Größe n, indem es auf ein Problem der Größe n-1 reduziert wird. Das heißt, die Beziehung zwischen n und n-1 zu finden.

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!

Empfohlene Lektüre:

VeeValidate-Formularüberprüfungs-Anwendungsfallcode-Analyse im Vue-Projekt

Vue verwendet Vee-Validate. Detaillierte Erklärung der Schritte des Verifizierungsformulars

Das obige ist der detaillierte Inhalt vonZusammenfassung gängiger Beispiele für JS-Algorithmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage