In den letzten zwei Tagen habe ich mir den Github eines bestimmten Meisters angesehen und festgestellt, dass er sich mehr für Algorithmen interessiert. Ich habe einen der Schrittzählalgorithmen zum Berechnen von Zahlen gesehen, also habe ich ihn implementiert selbst eins.
Algorithmusbeschreibung und Implementierungsprinzip
Zählen Sie bei einer gegebenen ganzen Zahl, wie viele Züge das Ziel erreichen können. Beispielsweise kann eine Zahl 4 die folgenden Züge haben
Tatsächlich kann aus der obigen Kombination die folgende Schlussfolgerung gezogen werden.
1. Listen Sie zunächst alle Kombinationen auf, deren Elemente 1 sind
2. Von links nach rechts die Kombinationen, deren Elemente 1 sind
3. Rekursieren Sie den obigen Satz, suchen Sie den Index 1 im Element und berechnen Sie dann die Werte der beiden Elemente von links. Das Ergebnis ist eine rekursive Operation
4. Schließen Sie die Situationen 1 und 2 aus
Die folgenden drei Werkzeugfunktionen stehen zur Verfügung:
//Gib den Wert des Arrays aus
Funktion print(arg){
for(var i = 0; i < arg.length; i ){
console.log(arg[i]);
}
}
// Überprüfen Sie, ob es sich um eine Vorwärts- oder Rückwärtsbewegung handelt
Funktion hasRepeat(src, dist){
Wenn (dist.length != 2) false zurückgibt;
for(var i = 0, len = src.length; i < len ; i ){
If(dist.length == src[i].length){
If(dist[0] == src[i][1]){
return true;
}
}
}
Gibt false zurück;
}
Die Implementierung des Algorithmus ist unten aufgeführt:
//Ausführen
countSteps(4);
// Den folgenden Inhalt ausgeben
/*
[ 1, 3 ]
[ 4 ]
[ 1, 1, 2 ]
[ 2, 2 ]
[ 1, 1, 1, 1 ]
Insgesamt gibt es: 5 Arten des Gehens
*/
Zusammenfassung
Dieser Algorithmus kann tatsächlich auf bestimmte Arten von Spielen angewendet werden, wenn der Abstand zwischen zwei Objekten konstant ist. Natürlich kann er auch auf andere Orte angewendet werden Ich bin mit dem Algorithmus relativ wenig vertraut, aber er wird in vielen UI-Details verwendet. Ich werde in Zukunft weitere Artikel über Algorithmen veröffentlichen 🎜>