Rumah  >  Artikel  >  hujung hadapan web  >  Apakah kaedah pelaksanaan algoritma rekursif dalam JavaScript

Apakah kaedah pelaksanaan algoritma rekursif dalam JavaScript

PHPz
PHPzasal
2023-04-21 14:16:00612semak imbas

Algoritma rekursif ialah idea algoritma biasa Dengan memanggil fungsi rekursif, masalah boleh diuraikan dan diselesaikan. Dalam JavaScript, pelaksanaan fungsi rekursif adalah sangat mudah Anda hanya perlu memberi perhatian kepada susunan panggilan fungsi dan syarat keluar.

Seterusnya, kami akan memperkenalkan kaedah pelaksanaan algoritma rekursif dalam JavaScript melalui contoh.

Contoh 1: Cari nilai sebutan ke-n bagi jujukan Fibonacci

Jujukan Fibonacci merujuk kepada: 0, 1, 1, 2, 3, 5, 8, 13 , 21, 34, ..., iaitu, item pertama ialah 0, item kedua ialah 1, dan setiap item berikutnya ialah jumlah dua item sebelumnya. Yang berikut menggunakan algoritma rekursif untuk mencari nilai item ke-n bagi jujukan Fibonacci:

function fibonacci(n) {
  if(n <= 1) {
    return n;
  } else {
    return fibonacci(n-1) + fibonacci(n-2);
  }
}

Dalam kod di atas, mula-mula tentukan sama ada n ialah 1 atau 0. Jika ya, kembalikan n dirinya sebagai rekursi keadaan eksport. Jika n bukan 1 atau 0, pecahkan masalah untuk menyelesaikan jumlah dua item pertama, dan panggil fungsinya sendiri secara rekursif sehingga keadaan keluar dicapai.

Contoh 2: Masalah Menara Hanoi

Masalah Menara Hanoi ialah masalah rekursif klasik Masalahnya diterangkan seperti berikut: Terdapat tiga tiang, dan beberapa saiz diletakkan salah satu daripadanya. Sekarang anda perlu mengalihkan cakera ini ke tiang lain Semasa pergerakan, anda mesti meletakkan cakera yang lebih kecil pada satu tiang di atas cakera yang lebih besar, dan hanya satu cakera boleh dialihkan pada satu masa. Saya ingin bertanya, apabila syarat bergerak dipenuhi, berapa banyak pergerakan yang diperlukan untuk memindahkan semua cakera ke tiang lain?

Berikut ialah pelaksanaan algoritma rekursif untuk masalah Menara Hanoi:

function hannuo(n, A, B, C) {
  if(n === 1) {
    console.log(`将第${n}个圆盘从${A}移动到${C}`);
  } else {
    hannuo(n-1, A, C, B);
    console.log(`将第${n}个圆盘从${A}移动到${C}`);
    hannuo(n-1, B, A, C);
  }
}

Antaranya, n mewakili bilangan cakera, A, B, dan C mewakili tiga tiang masing-masing. Peranan fungsi rekursif hannuo Ia adalah untuk memindahkan n cakera dari bahagian bawah A ke bahagian bawah C, dan bahagian bawah B perlu digunakan di tengah Semasa proses rekursif, adalah perlu untuk berterusan selesaikan sub-masalah skala yang dikurangkan sehingga rekursi mencapai masalah terkecil: memindahkan cakera pertama dari A Move ke C. Keputusan akhir ialah memanggil hannuo(n, 'A', 'B', 'C') untuk menyelesaikan dan mengeluarkan langkah-langkah bergerak.

Algoritma rekursif boleh membantu kami menyelesaikan beberapa masalah yang rumit, tetapi kami juga perlu berhati-hati untuk mengelakkan rekursi tak terhingga, jadi kami mesti berhati-hati semasa menulis kod.

Atas ialah kandungan terperinci Apakah kaedah pelaksanaan algoritma rekursif dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn