Pertama-tama, kita ingat kembali tentang kerangka if-else
if (/* condition */) { // TODO } else { // TODO }
(/* condition */) ? /* TODO */ : /* TODO */;
Contoh.
if (*value == value[0]) { printf("Sama\n"); } else { printf("Tidak sama\n"); }
(*value == value[0]) ? printf("Sama\n") : printf("Tidak sama\n");
Kita lanjut ke konsep rekursifitas, apa itu fungsi rekursif ?
Fungsi rekursif adalah fungsi yang "memanggil" dirinya sendiri, bingung ?
Lihat contoh kerangka fungsinya di bawah ini
int fungsi() { fungsi(); }
int faktorial(int n) { if (n == 0) // BASE CASE { return 1; } return n * faktorial(n - 1); }
Sekarang, mari kita coba skill baru kita untuk membuat kode yang sangat sederhana tapi powerful.
Lihat contoh fungsi linear search ini.
int linear_search(int data[], int length, int key) { for (int i = 0; i < length; i++) { if (data[i] == key) { return i; } } return -1; }
int linear_search(int data[], int length, int key) { return (data[length - 1] == key) ? length - 1 : ((length < 0) ? -1 : linear_search(data, length - 1, key)); }
Sekarang kita bisa membuat fungsi linear search hanya dengan sedikit baris kode, cool kan ? :D
3 comments
kegunaannyo fungsi manggil dirinyo dewek apo?? :v
ReplyMakaaaassih tah :p
ReplyBiasanya fungsi rekursif itu mudah dilacak dimana errornya karena baris kode yg lebih sedikit dari fungsi iteratif.
ReplyTerus juga biasanya digunakan pada program-program yang memiliki tingkatan-tingkatan pada algoritmanya seperti Quick Sort dan Merge Sort.
Mana yang lebih cepet, fungsi iteratif atau fungsi rekursif ? sebenarnya sih sama aja, cuma yah seperti yang diomongin tadi. :D
Post a Comment