Rumah > Artikel > tutorial komputer > Bagaimana untuk melaksanakan carian binari Java menggunakan algoritma rekursif
carian rekursif binari kelas awam {
public static void main(String[] args) ialah titik masuk program Java dan kedudukan permulaan pelaksanaan program. Dalam kaedah ini, logik dan fungsi utama program boleh ditulis. Kaedah ini mesti ditakrifkan dalam format tertentu sebelum ia boleh dipanggil dan dilaksanakan oleh mesin maya Java. Dalam senarai parameter kaedah utama, args ialah tatasusunan rentetan yang boleh digunakan untuk menerima parameter baris arahan. Dengan menulis kod dalam kaedah utama, kita boleh melaksanakan pelbagai fungsi, seperti cetakan, pengiraan, gelung, penghakiman bersyarat, dsb. {
//Tentukan tatasusunan Ambil perhatian bahawa tatasusunan carian binari mestilah tatasusunan tertib!
int[] arr = { 1, 3, 5, 7, 9, 11, 13, 15, 17 } ialah pengisytiharan dan penyataan permulaan bagi tatasusunan integer, yang mengandungi 9 elemen. Nilai setiap elemen ialah 1, 3, 5, 7, 9, 11, 13, 15, 17. Dengan cara ini, kami mencipta tatasusunan integer bernama arr dan memberikannya nilai awal. Dalam atur cara seterusnya, kita boleh menggunakan tatasusunan ini untuk melaksanakan pelbagai operasi, seperti mencari, menyusun dan mengira
//Terima nilai pulangan selepas carian: nilai indeks, jika tidak, ia adalah -1;
// Elemen cari ujian: 9
int a = binarySearch(arr, 9, 0, arr.length - 1);
System.out.println("Kedudukan indeks nombor yang dicari ialah: " + a);
}
//Senarai parameter mengikut urutan: tatasusunan untuk dicari, nombor untuk dicari, indeks kepala, indeks ekor!
binari int statik awam(int[] arr, kunci int, int mula, int akhir) // Rekursi
{
//Buat setiap kali anda masuk, nilai indeks perantaraan!
int pertengahan = (bintang + akhir) / 2;
Jika nombor yang akan ditemui adalah kurang daripada indeks permulaan atau lebih besar daripada indeks berakhir, atau indeks permulaan lebih besar daripada indeks berakhir, ini bermakna nombor itu tidak wujud dan -1 dikembalikan.
jika (kunci arr[end] || mula > tamat) {
kembali -1;
}
//Jika nilai tengah kurang daripada nombor yang dicari, takrifkan semula indeks pengepala dan alihkannya ke kedudukan +1 tengah, supaya separuh daripada nombor boleh ditapis keluar!
jika (arr[pertengahan]
// Mulakan rekursi!
return binary(arr, key, mid + 1, end); // Teruskan carian binari pada separuh kedua tatasusunan
// Jika tidak, jika nilai tengah lebih besar daripada nombor yang dicari, gerakkan indeks ekor kembali ke kedudukan tengah -1, supaya separuh daripada nombor boleh ditapis keluar!
} lain jika (arr[mid] > kunci) {
// Mulakan rekursi!
perduaan pulangan(arr, kunci, mula, pertengahan - 1);
} lain {
//Jika tidak, didapati, kembali ke indeks!
kembali tengah;
}
}
}
Soalan pertama:
CalSum kelas awam {
public static void main(String[] args) ialah titik masuk program Java dan kedudukan permulaan pelaksanaan program. Dalam kaedah ini, logik dan fungsi utama program boleh ditulis. Kaedah ini mesti ditakrifkan dalam format tertentu sebelum ia boleh dipanggil dan dilaksanakan oleh mesin maya Java. Dalam senarai parameter kaedah utama, args ialah tatasusunan rentetan yang boleh digunakan untuk menerima parameter baris arahan. Dengan menulis kod dalam kaedah utama, kita boleh melaksanakan pelbagai fungsi, seperti cetakan, pengiraan, gelung, penghakiman bersyarat, dll.
{
CalSum calSum = CalSum baharu();
int result = calSum.calculate(100); // Panggil kaedah pengiraan objek calSum, masukkan parameter 100, dan tetapkan hasilnya kepada pembolehubah hasil.
System.out.println("Jumlah 1+2+3+...+100 adalah sama dengan" + hasil);
}
pengiraan int awam(nombor int)
{
int hasil = 0;
jika(nombor == 1)
{
hasil = 1;
}
lain
{
hasil = nombor + kira(nombor - 1); Ungkapan ini boleh dikira secara rekursif Setiap kali panggilan rekursif dibuat, nilai nombor akan dikurangkan sebanyak 1 sehingga rekursif berhenti apabila nombor sama dengan 1. Nilai pulangan panggilan rekursif akan terus terkumpul ke dalam hasil akhir. Dengan cara ini, kita boleh mendapatkan jumlah jujukan.
}
hasil pulangan;
}
}
Lelaran ialah gelung biasa.
Contoh: Tambahkan daripada 1 hingga 10
int sum=0
untuk(int i=0;i
jumlah=jumlah+i;
}
Rekursi bermaksud fungsi memanggil dirinya secara langsung atau tidak langsung.
Contohnya: Pada suatu masa dahulu ada seorang sami besar dan seorang sami kecil di sebuah kuil Besar itu meminta sami kecil itu bercerita bahawa pada suatu masa dahulu terdapat seorang sami besar dan seorang sami kecil di sebuah kuil. Sami kecil itu meminta sami besar untuk bercerita. Sami besar itu kemudiannya berkata bahawa pernah ada seorang sami besar dan seorang sami kecil di sebuah kuil, dan mereka berlatih dan mempelajari agama Buddha bersama-sama setiap hari.
Ciri-ciri rekursi:
Mesti ada tiga syarat:
1. Panggil diri anda secara tidak langsung atau langsung.
2. Semasa bermain permainan, pastikan anda menetapkan syarat untuk keluar Sebagai contoh, rahib akan berhenti mendengar cerita jika mulutnya kering. Jika syarat keluar tidak ditetapkan, permainan mungkin jatuh ke dalam gelung tak terhingga.
3. Mesti ada badan yang logik (apa yang anda mahu lakukan);
jumlah int awam(int x){jika(x
kembali x;
}
kembali x+jumlah(x-1);
}
int s=10;
int jumlah=jumlah(s);
Dalam contoh ini, fungsi jumlah sentiasa memanggil dirinya sendiri, kembalikan x+sum(x-1);
sum mempunyai keadaan keluar, x
Keputusan akhir ialah mengembalikan 10+9+8+7+... 1
Dalam banyak kes, kedua-dua lelaran dan rekursi boleh mencapai fungsi yang sama, tetapi terdapat beberapa fungsi yang tidak dapat diselesaikan oleh lelaran. Selain itu, kod rekursif adalah lebih ringkas, dan penggunaan rekursif yang cekap boleh meningkatkan kualiti kod.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan carian binari Java menggunakan algoritma rekursif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!