0% menganggap dokumen ini bermanfaat (0 suara)
135 tayangan4 halaman

Lab10 Rekursif PDF

Dokumen tersebut membahas tentang fungsi rekursif yang merupakan fungsi yang menyelesaikan masalah dengan memanggil dirinya sendiri berulang kali sampai masalah menjadi lebih kecil dan dapat diselesaikan. Fungsi rekursif membutuhkan kondisi berhenti, kondisi rekursif, dan ekspresi rekursif. Contoh penerapan fungsi rekursif adalah perhitungan faktorial secara iteratif dan rekursif.

Diunggah oleh

Ngebuts Indonesia
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
135 tayangan4 halaman

Lab10 Rekursif PDF

Dokumen tersebut membahas tentang fungsi rekursif yang merupakan fungsi yang menyelesaikan masalah dengan memanggil dirinya sendiri berulang kali sampai masalah menjadi lebih kecil dan dapat diselesaikan. Fungsi rekursif membutuhkan kondisi berhenti, kondisi rekursif, dan ekspresi rekursif. Contoh penerapan fungsi rekursif adalah perhitungan faktorial secara iteratif dan rekursif.

Diunggah oleh

Ngebuts Indonesia
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 4

Praktikum Pemrograman Lanjut

Informatika – UPN Veteran Jakarta


Lab 10 Fungsi Rekursif

Fungsi rekursif adalah keadaan yang man a sebuah fungsi menyelesaikan sebuah permasalahan dengan cara
memanggil diri sendiri secara berulang kali. Jika masalah sudah cukup kecil, maka fungsi rekursif dapat
langsung menghasilkan jawaban. Namun, jika masalah terlalu besar, maka fungsi akan memanggil dirinya
sendiri dengan cakupan masalah yang lebih kecil.

Banyak permasalahan yang lebih mudah diselesaikan dan pendek kodenya jika menggunakan pendekatan
rekursif. Pada dasarnya, strategi iteratif (misalnya dengan for loop) dan rekursif sama-sama melakukan
sesuatu yang berulang-ulang. Namun, terkadang solusi iteratif untuk suatu masalah sangat sulit untuk
dipikirkan dan memerlukan teknik khusus. Dengan solusi rekursif, mungkin saja lebih mudah untuk melihat
dan merancang alur penyelesaiannya.

Fungsi rekursif membutuhkan tiga elemen:


• Terminating conditions (kondisi berhenti), yaitu suatu kondisi untuk menentukan kapan proses
rekursif akan dihentikan. Contoh: b==0.
• Recursif conditions (kondisi rekursif), yaitu suatu kondisi dimana fungsi akan terus memanggil
dirinya sendiri. Contoh: b≠0.
• Recursive expressions (ekspresi rekursif), yaitu ekspresi yang ditulis untuk memanggil fungsi itu
sendiri. Contoh: jumlah(a,b)=1+jumlah(a,b-1).

Contoh : Faktorial
Pak Dengklek baru mempelajari konsep matematika baru, yaitu faktorial. Operasi faktorial pada N, atau
ditulis dengan notasi N!, adalah operasi mengalikan bilangan dari 1 sampai dengan N. Contoh: Jika N = 4,
maka 4! = 1 x 2 x 3 x 4 = 24 Diberikan N, bantu Pak Dengklek mencari hasil N!

Format Masukan : sebuah baris berisi sebuah bilangan N


Format Keluaran : sebuah baris berisi hasil N!
Batasan : 1<= N <= 10

Masalah di atas dapat diselesaikan dengan dua pendekatan, yaitu:


• Diselesaikan secara iteratif (cukup menggunakan for loop biasa)
int faktorial(int n)
{
int hasil = 1, i;
for (i=2; i<=n; i++)
hasil*=i;
return hasil;
}

• Diselesaikan secara rekursif


int faktorial(int n)
{
if (n==1)
return 1;
else
return n * faktorial(n-1);
}

Pemanggilan pada program utama bisa dilakukan seperti memanggil fungsi biasa:

...

int main()
{
printf("4! = %d\n", faktorial(4));
}

Gambaran dari eksekusi fungsi faktorial di atas dapat dilihat pada gambar di bawah ini:

LATIHAN
1. Perhatikan fungi berikut:
int banyak(int x) {
if (x < 0) {
return 0;
} else {
return x + banyak(x - 2);
}
}

Jika dipanggil banyak(5), berapakah nilai yang akan dikembalikan?

2. Perhatikan prosedur di bawah ini:


void draw(int x) {
if (x > 0) {
draw(x-1);
for (int i = 0; i < x; i++) {
printf("*");
}
printf("\n");
}
}

Apakah keluaran yang dihasilkan jika dipanggil draw(4)?

3. Perhatikan fungsi berikut:


int jabatan(int a, int b) {
if (b == 0) {
return 1;
} else if (b % 2 == 1) {
return a * jabatan(a, b - 1);
} else {
int temp = jabatan(a, b / 2);
return temp * temp;
}
}

Jika dipanggil jabatan(2,5), berapakah nilai yang akan dikembalikan?


4. Perhatikan fungsi berikut:

int kardus(int a, int b) {


if (a > b) {
return 1 + kardus(a - 1, b);
} else if (a < b) {
return 1 + kardus(a, b - 1);
} else {
return a + b;
}
}

Jika dipanggil kardus(12,17), berapakah nilai yang akan dikembalikan?

5. Perhatikan fungsi berikut:

int ekor(int a, int b, int t) {


if (b == 0) {
return t;
} else {
return ekor(a, b - 1, t * a);
}
}

Jika dipanggil ekor(3,4,2), berapakah nilai yang akan dikembalikan?


6. Pak Dengklek yang sangat menyukai matematika sedang mengajarkan faktorial kepada Ucil,
bebek Pak Dengklek. Karena Ucil sangatlah cerdas, ia pun dengan mudahnya mengerti
faktorial. Oleh karena itu, Pak Dengklek memberikan tantangan baru kepada Ucil untuk
mempelajar faktorial ganjil-genap.

Perhitungan faktorial ganjil-genap sama seperti faktorial biasa, hanya saja semua bilangan
genap yang dikalikan harus dibagi dengan 2 terlebih dahulu. Seperti kita ketahui bahwa
notasi dari faktorial untuk bilangan bulat N adalah N!. Sementara itu, notasi dari faktorial
ganjil-genap untuk N adalah N!!.

Perhitungan dari N! adalah sebagai berikut:

N!
= N × (N−1)!
= N × (N−1) × (N−2) × ... × 1

Sedangkan, perhitungan dari N!! adalah sebagai berikut:

N!!
= f(N) × (N−1)!!
= f(N) × f(N−1) × f(N−2) × ... × f(1)

dengan f(x) = x, apabila x ganjil, atau x/2 apabila x genap.

Sebagai contoh, 5!! = 5 × 4/2 × 3 × 2/2 × 1 = 30.

Ucil diberikan sebuah bilangan bulat N. Bantulah Ucil membuatkan program untuk
menghitung faktorial ganjil-genap dari N. Khusus untuk program ini, Ucil meminta agar
Anda menggunakan rekursi.

Format Masukan : Sebuah baris berisi sebuah bilangan bulat N.

Format Keluaran : Sebuah baris berisi sebuah bilangan bulat N!!.

Contoh Masukan :5

Contoh Keluaran : 30

Anda mungkin juga menyukai