Pada tutorial sebelumnya,kita sudah mempelajari tentang Tutorial Belajar JavaScript Bagian 35 : Cara Menulis Anonymous Function di JavaScript.
Dalam tutorial ini, kita akan mempelajari cara menggunakan teknik rekursi untuk mengembangkan recursive functionJavaScript, yang merupakan function yang memanggil dirinya sendiri.
Pengantar recursive functionJavaScript
Recursive functionadalah function yang memanggil dirinya sendiri sampai tidak. Dan teknik ini disebut rekursi.
Misalkan Anda memiliki function yang disebut recurse(). recurse() adalah recursive functionif ia memanggil dirinya sendiri di dalam tubuhnya, seperti ini :
function recurse() { // ... recurse(); // ... }
Recursive function selalu memiliki syarat untuk berhenti memanggil dirinya sendiri. Kalau tidak, itu akan memanggil dirinya sendiri tanpa batas. Jadi recursive functionbiasanya terlihat seperti berikut :
function berulang() { if(condition) { // berhenti memanggil dirinya sendiri //... } else { berulang(); } }
Umumnya, kita menggunakan recursive function untuk memecah masalah besar menjadi lebih kecil. Biasanya, kita akan menemukan recursive function dalam struktur data seperti pohon biner dan grafik serta algoritme seperti pencarian biner dan quicksort.
Contoh recursive function JavaScript
Mari kita ambil beberapa contoh penggunaan function rekursif.
1. Contoh recursive function JavaScript sederhana
Misalkan Anda perlu mengembangkan function yang menghitung mundur dari angka tertentu ke 1. Misalnya, untuk menghitung mundur dari 3 ke 1 :
3 2 1
Kode berikut ini menunjukkan function countDown() :
function countDown(fromNumber) { console.log(fromNomor); } countDown (3);
Variabel countDown(3) ini hanya menunjukkan angka 3.
Untuk menghitung mundur dari angka 3 ke 1, Anda dapat:
- Tunjukkan nomor 3.
- dan panggil countDown(2) yang menunjukkan angka 2.
- dan panggil countDown(1) yang menunjukkan angka 1.
Berikut ini mengubah countDown() menjadi recursive function :
function countDown(fromNumber) { console.log(fromNumber); countdown(fromNumber-1); } countDown(3);
countDown (3) ini akan berjalan hingga ukuran tumpukan panggilan terlampaui, seperti ini :
Uncaught RangeError: Maximum call stack size exceeded.
… karena tidak memiliki syarat untuk berhenti memanggil dirinya sendiri.
Hitungan mundur akan berhenti ketika angka berikutnya adalah nol. Oleh karena itu, Anda menambahkan condition if sebagai berikut :
function countDown(fromNumber) { console.log(fromNumber); let nextNumber = fromNumber - 1; if (nextNumber > 0) { countDown(nextNumber); } } countDown(3);
Hasil :
3 2 1
CountDown() tampaknya berfunction seperti yang diharapkan.
Namun, seperti yang disebutkan dalam tutorial tipe function, nama function adalah referensi ke objek function yang sebenarnya.
Jika nama function diatur ke nol di suatu tempat di dalam kode, recursive function akan berhenti bekerja.
Misalnya, kode berikut akan menghasilkan kesalahan :
let newYearCountDown = countDown; // di suatu tempat di dalam kode countDown = null; // pemanggilan function berikut akan menyebabkan kesalahan newYearCountDown(10);
Kesalahan :
Uncaught TypeError: countDown is not a function
Cara kerja skrip:
- Pertama, tetapkan nama function countdown ke variabel newYearCountDown.
- Kedua, mengatur referensi function countDown ke nol.
- Ketiga, panggil function newYearCountDown.
- Kode menyebabkan kesalahan karena isi function countDown() mereferensikan nama function countDown, yang diatur ke null pada saat function dipanggil.
Untuk memperbaikinya, Anda dapat menggunakan ekspresi function sebagai berikut :
let countDown = function f(fromNumber) { console.log(fromNumber); let nextNumber = fromNumber - 1; if (nextNumber > 0) { f(nextNumber); } } let newYearCountDown = countDown; countDown = null; newYearCountDown(10);
2. Contoh menghitung jumlah n bilangan asli
Misalkan Anda perlu menghitung jumlah bilangan asli dari 1 hingga n menggunakan teknik rekursi. Untuk melakukannya, Anda perlu mendefinisikan sum() secara rekursif sebagai berikut :
jumlah(n) = n + jumlah(n-1) jumlah(n-1) = n - 1 + jumlah(n-2) ... jumlah(1) = 1
Berikut ini ilustrasi recursive function jumlah () :
function jumlah(n) { if (n <= 1) { return n; } return n + jumlah(n - 1); }
Kesimpulan
- Recursive function adalah function yang memanggil dirinya sendiri sampai berhenti.
- Recursive function selalu memiliki kondisi yang menghentikan function memanggil dirinya sendiri.
Itu dia penjelasan tentang recursive function dalam bahasa pemrograman JavaScript. Semoga tutorial ini bermanfaat bagi Andadalam belajar JavaScript.
0 Komentar