Dalam dua hari yang lalu, saya melihat github master tertentu dan mendapati bahawa dia lebih berminat dengan algoritma. Saya melihat salah satu algoritma pengiraan langkah untuk mengira nombor, jadi saya laksanakan satu diri saya.
Penerangan algoritma dan prinsip pelaksanaan
Diberi nombor integer, kira berapa banyak pergerakan yang boleh mencapai matlamat Contohnya, nombor 4 boleh mempunyai pergerakan berikut
Malah, kesimpulan berikut boleh dibuat melalui gabungan di atas.
1. Senaraikan dahulu semua kombinasi yang itemnya 1
2. Dari kiri ke kanan, gabungan yang itemnya ialah 1
3. Ulang set di atas, cari indeks 1 dalam item, dan kemudian hitung nilai 2 item dari kiri Hasilnya ialah operasi rekursif
4. Kecualikan situasi 1 dan 2
Tiga fungsi alat berikut disediakan:
//Keluarkan nilai tatasusunan
fungsi cetak(arg){
untuk(var i = 0; i < arg.length; i ){
console.log(arg[i]);
}
}
// Semak sama ada ia adalah pergerakan ke hadapan atau ke belakang
fungsi mempunyaiRepeat(src, dist){
Jika (dist.length != 2) kembalikan palsu;
untuk(var i = 0, len = src.length; i < len ; i ){
If(dist.length == src[i].length){
If(dist[0] == src[i][1]){
kembali benar;
}
}
}
Kembalikan palsu;
}
Pelaksanaan algoritma dipaparkan di bawah:
//Lari
countSteps(4);
// Keluarkan kandungan berikut
/*
[ 1, 3 ]
[ 4 ]
[ 1, 1, 2 ]
[ 2, 2 ]
[ 1, 1, 1, 1 ]
Terdapat sejumlah: 5 jenis berjalan
*/
Ringkasan
Algoritma ini sebenarnya boleh digunakan untuk jenis permainan tertentu Apabila jarak antara dua objek adalah tetap, semua kemungkinan boleh diproses, ia juga boleh digunakan untuk tempat lain biasa dengan algoritma. Terdapat sedikit amalan, tetapi ia masih mempunyai nilai Algoritma sebenarnya digunakan dalam banyak butiran UI saya akan menyiarkan lebih banyak artikel tentang algoritma apabila saya mempunyai masa pada masa hadapan 🎜>