
Membahas konsep rekursif (rekursi/recursion). Rekursif adalah sebuah fungsi yang memanggil dirinya sendiri. Function pada umumnya alurnya seperti input → function → output.
Yang terjadi pada konsep rekursif:
+Diberikan input kemudian;
+ Function tersebut memanggil diri sendiri terus menerus sampai berhenti dan menghasilkan nilai. Akan tetapi mungkin saya ketika memanggil konsep ini pemanggilannya tidak berhenti-henti, sama seperti infinite loop (hati-hati menggunakan rekursif).
+Pastikan fungsi harus berakhir dan menghasilkan nilai.
Contoh:
function tes(){
return tes();
}
tes();
Ketika dijalankan dia memanggil fungsi itu sendiri dan terus menerus tiada akhir dan di console browser akan ada tulisan 'maximum call stack size exceeded" artinya terlalu banyak fungsi rekursif yang dijalankan.
Contoh:
Ketika dijalankan dia memanggil fungsi itu sendiri dan terus menerus tiada akhir dan di console browser akan ada tulisan 'maximum call stack size exceeded" artinya terlalu banyak fungsi rekursif yang dijalankan.
Contoh:
Membuat fungsi menampilkan angka 10 - 1 dengan rekursif.
function tampilAngka(n){
function tampilAngka(n){
console.log(n);
return tampilAngka(n-1);
}
tampilAngka(10);
Console browser → akan tampil pengurangan angka hingga -17878 sekian hingga tampil "maximum call stack size exceeded". Maka harus ada kondisi berhenti.
Kodisi berhenti pada rekursif disebut base case (kondisi akhir dari rekursif yang mengasilkan nilai)
Console browser → akan tampil pengurangan angka hingga -17878 sekian hingga tampil "maximum call stack size exceeded". Maka harus ada kondisi berhenti.
Kodisi berhenti pada rekursif disebut base case (kondisi akhir dari rekursif yang mengasilkan nilai)
Contoh:
Contoh lain kasus faktorial pada operasi matematika.
maksudnya: faktorial(5), apakah 5===0 (false) maka lanjut ke kode return n * faktorial(n-1), sehingga 5 * factorial(5-1) dst sampai return 5 ...... factorial (1-1), masuk ke fungsi faktorial(0) → apakah 0===0 (TRUE) maka return 1 hasilnya 5*4*3*2*1 hasilnya 120 tampil di console browser.
"Semua looping bisa dibuat rekursif, tetapi tidak sebaliknya." Faktorial di dalam looping yaitu
"Semua looping bisa dibuat rekursif, tetapi tidak sebaliknya." Faktorial di dalam looping yaitu
function faktorial (n){
var hasil = 1;
for(var i=n; i>0;i--){
hasil *= 1;
}
return hasil;
}
Implementasi rekursif:
↳ Menggantikan looping
↳ fibonacci
↳ pencarian dan penelusuran pada struktur data list dan tree.
↳ Digunakan oleh bahasa pemrograman yang tidak memiliki pengulangan seperti: Haskel, Erlang, Prolog, dll.
↳ AI,dll
↳ Backtracking, pembuatan game, koalisi, pembentukan object, dll.
0 comments:
Post a Comment