SlideShare a Scribd company logo
1 of 18
Fungsi Rekursif (Berulang)
Pemrograman Dasar
Definisi
• Recursive = Berulang
• Recursive function =
fungsi rekirsif = fungsi
yang berulang
• di dalam fungsi
tersebut dia
memanggil dirinya
sendiri
Fungsi Rekursif
• Fungsi rekursif:
Di dalamnya terdapat pernyataan yang memanggil dirinya
sendiri.

• Berguna untuk memecahkan masalah yang dapat
didefinisikan secara rekursif pula.
• n faktorial atau n! = n * n-1 * n-2 * …. * 3 * 2 * 1, dan
didefiniskan bahwa 0! = 1
• Contoh:
 3! = 3 * 2 * 1
 4! = 4 * 3 * 2 * 1
 4! = 4 * 3!
 n! = n * (n-1)!
3
Faktorial (n) atau n! didefinisikan sebagai berikut :
jika n = 0, n! = 1
jika n > 0, n! = n * (n-1)!
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1!
1! = 1* 0!
0! = 1
Jadi: 4! = 4*3*2*1= 24
Fungsi Iteratif
4! = 4*3! = 4*3*2! = 4*3*2*1! = 4*3*2*1 = 24
// iteratif dekremental
long faktorialIteratifDec(long n)
mulai
long i, faktorial = 1;

for(i=n; i>=1; i--)
faktorial *= i;
return faktorial;
selesai
tutup

4! = 1*2*3*4 = 24
// iteratif inkremental
long faktorialIteratifInc(long n){
mulai
long i, faktorial = 1;

for(i=1; i<=n; i++)
faktorial *= i;
return faktorial;
selesai
tutup

5
Fungsi Rekursif
• Contoh perhitungan 5 faktorial
5!
(5 * 4!)
(5 * (4 *3!))
(5 * (4 * (3 * 2!)))
(5 * (4 * (3 * (2 * 1!))))
(5 * (4 * (3 * (2 * (1 * 0!)))))
(5 * (4 * (3 * (2 * (1 * 1)))))
(5 * (4 * (3 * (2 * 1))))
(5 * (4 * (3 * 2)))
(5 * (4 * 6 ))
(5 * 24)
120

6
Fungsi Rekursif
• Fungsi rekursif mempunyai dua komponen
yaitu:
– Base case:
Mengembalikan nilai tanpa melakukan pemanggilan rekursi
berikutnya.
Rekursi berakhir jika base case dijumpai/dipenuhi

– Recursion call / Reduction step:
Memanggil fungsi rekursif di dalam fungsi rekursif di atas
Menghubungkan sebuah fungsi rekursif dengan fungsi rekursif
di dalamnya
Biasanya memiliki keyword return untuk mengembalikan nilai
ke fungsi yang memanggilnya

7
Fungsi Rekursif
• Fungsi faktorial
– Base case: n = 0
– Reduction step: f(n) = n * f(n-1)
// rekursif
long faktorialRekursif(long n)
mulai
if(n==0)
return (1);
else
return(n * faktorialRekursif(n-1));
selesai
tutup

8
Rekursif vs Iteratif
• Contoh:
•

Faktorial - Rekursif

long faktorial(long n)
mulai
if(n==0)
return (1);
else
return(n*faktorial(n-1));
selesai
tutup

• Faktorial - Iteratif
// dekremental
long faktorial(long n)
mulai
long i, faktorial = 1;
for(i=n; i>=1; i--)
faktorial *= i;
return faktorial;
selesai
tutup

9
Rekursif vs Iteratif
Rekursif

Iteratif

Pengulangan dengan struktur seleksi (ifelse) dan pemanggilan fungsi (dirinya
sendiri) -> rekursi
Pengulangan berhenti saat base case
dijumpai/dipenuhi (konvergen
terhadap base case)
Pengulangan tanpa henti jika base case
tidak pernah dijumpai/dipenuhi
(tidak konvergen terhadap base case)
Biaya proses lebih tinggi dengan
pemanggilan banyak fungsi (butuh
memori lebih besar & kerja prosesor
lebih tinggi)
Terbaca lebih jelas, model lebih dekat
dengan masalah (contoh:
faktorial, fibonacci)

Pengulangan dengan struktur repetisi
(for/while)
Pengulangan berhenti saat kondisi
pengulangan bernilai salah (false)
Pengulangan tanpa henti jika kondisi
pengulangan selalu benar
Biaya proses lebih rendah (kebutuhan
memori lebih kecil & kerja prosesor
lebih rendah) karena proses
pengulangan berada dalam satu
fungsi
Terbaca kurang jelas, model kurang dekat
dengan masalah (contoh:
faktorial, fibonacci)

10
Kekurangan Rekursi
• Meskipun penulisan program dengan cara rekursif bisa
lebih jelas dan pendek, namun fungsi rekursif
memerlukan :
– Memori yang lebih banyak untuk mengaktifkan stack
(memori yang digunakan untuk pemanggilan fungsi).
– Waktu lebih lama untuk menjejaki setiap rekursi melalui
stack.
Apakah
stack ?
11
Kapan Rekursi?
• Secara umum, hanya jika :
– Penyelesaian sulit dilaksanakan secara iteratif
– Efisiensi dengan cara rekursif masih memadai
– Efisiensi bukan masalah dibandingkan dengan kejelasan logika program
– Tidak mempertimbangkan faktor penghematan memori dan kecepatan
eksekusi program

Kecepatan kerja dan penghematan memori (iteratif)
VS

Perancangan logika yang baik (rekursif)
12
Bilangan Fibonacci
• Urutan bilangan 0, 1, 1, 2, 3, 5, 8, 13 … disebut
bilangan Fibonacci.
• Hubungan antara satu angka dengan angka
berikutnya didefinisikan secara rekursif
sebagai berikut :
– Fib(n) = n, jika n = 0 atau 1
– Fib(n) = Fib(n-2) + Fib(n-1) , jika n >= 2

13
• Misalkan jika ditanya berapa suku ke-4 dari
barisan fibonachi?
• n=4
fibo(4) =
= fibo(3) + fibo(2)
= (fibo(2) + fibo(1)) + (fibo(1) + fibo(0))
= ((fibo(1) + fibo(0)) + 1) + (1 + 0)
= ((1 + 0) + 1) + 1
= (1 + 1) + 1
=2+1
=3
Bilangan Fibonacci
int Fib(int n)
mulai
int f;
if(n==0)
f = 0;
else if(n==1)
f = 1;
else
f = Fib(n-2) + Fib(n-1);
return f;
selesai
tutup

Fungsi fib() di atas ditulis secara rekursif dan disebut sebagai
slow_Fib()
Tulislah fast_Fib() jika menggunakan iterasi.
15
Bilangan Fibonacci
• Contoh : Skema fibonacci jika N=4
FIB (4)
FIB (3)
FIB (2)
FIB (1)

+

+

FIB (1)

+

FIB (2)
FIB (1)

+

FIB (0)

FIB (0)

16
Latihan
• Implementasikan algoritma rekursi untuk
fungsi fibonaci dan rekursif!
Terima Kasih

More Related Content

What's hot

Integral Tak Wajar ( Kalkulus 2 )
Integral Tak Wajar ( Kalkulus 2 )Integral Tak Wajar ( Kalkulus 2 )
Integral Tak Wajar ( Kalkulus 2 )Kelinci Coklat
 
Pembuktian Sifat – Sifat Operasi Matriks
Pembuktian Sifat – Sifat Operasi MatriksPembuktian Sifat – Sifat Operasi Matriks
Pembuktian Sifat – Sifat Operasi MatriksIpit Sabrina
 
03 limit dan kekontinuan
03 limit dan kekontinuan03 limit dan kekontinuan
03 limit dan kekontinuanRudi Wicaksana
 
Matematika Diskrit Relasi Rekursif
Matematika Diskrit Relasi RekursifMatematika Diskrit Relasi Rekursif
Matematika Diskrit Relasi RekursifAyuk Wulandari
 
Bab 2 perhitungan galat
Bab 2  perhitungan galatBab 2  perhitungan galat
Bab 2 perhitungan galatKelinci Coklat
 
Pertemuan 02 teori dasar himpunan
Pertemuan 02   teori dasar himpunanPertemuan 02   teori dasar himpunan
Pertemuan 02 teori dasar himpunanFajar Istiqomah
 
Fungsi Gamma dan Beta (Kalkulus Peubah Banyak)
Fungsi Gamma dan Beta (Kalkulus Peubah Banyak)Fungsi Gamma dan Beta (Kalkulus Peubah Banyak)
Fungsi Gamma dan Beta (Kalkulus Peubah Banyak)Kelinci Coklat
 
Bab 1. Sistem Bilangan Real
Bab 1. Sistem Bilangan RealBab 1. Sistem Bilangan Real
Bab 1. Sistem Bilangan RealKelinci Coklat
 
Interpolasi lagrange dan newton
Interpolasi lagrange dan newtonInterpolasi lagrange dan newton
Interpolasi lagrange dan newtonYuni Dwi Utami
 
Contoh soal dan penyelesaian metode biseksi
Contoh soal dan penyelesaian metode biseksiContoh soal dan penyelesaian metode biseksi
Contoh soal dan penyelesaian metode biseksimuhamadaulia3
 

What's hot (20)

1001 soal pembahasan kalkulus
1001 soal pembahasan kalkulus1001 soal pembahasan kalkulus
1001 soal pembahasan kalkulus
 
Integral Tak Wajar ( Kalkulus 2 )
Integral Tak Wajar ( Kalkulus 2 )Integral Tak Wajar ( Kalkulus 2 )
Integral Tak Wajar ( Kalkulus 2 )
 
Pembuktian Sifat – Sifat Operasi Matriks
Pembuktian Sifat – Sifat Operasi MatriksPembuktian Sifat – Sifat Operasi Matriks
Pembuktian Sifat – Sifat Operasi Matriks
 
03 limit dan kekontinuan
03 limit dan kekontinuan03 limit dan kekontinuan
03 limit dan kekontinuan
 
Matematika Diskrit Relasi Rekursif
Matematika Diskrit Relasi RekursifMatematika Diskrit Relasi Rekursif
Matematika Diskrit Relasi Rekursif
 
Distribusi peluang
Distribusi peluangDistribusi peluang
Distribusi peluang
 
Bab 2 perhitungan galat
Bab 2  perhitungan galatBab 2  perhitungan galat
Bab 2 perhitungan galat
 
Turunan
TurunanTurunan
Turunan
 
Fungsi Pembangkit
Fungsi PembangkitFungsi Pembangkit
Fungsi Pembangkit
 
Pertemuan 02 teori dasar himpunan
Pertemuan 02   teori dasar himpunanPertemuan 02   teori dasar himpunan
Pertemuan 02 teori dasar himpunan
 
Matematika diskrit
Matematika diskritMatematika diskrit
Matematika diskrit
 
Turunan
TurunanTurunan
Turunan
 
Fungsi Gamma dan Beta (Kalkulus Peubah Banyak)
Fungsi Gamma dan Beta (Kalkulus Peubah Banyak)Fungsi Gamma dan Beta (Kalkulus Peubah Banyak)
Fungsi Gamma dan Beta (Kalkulus Peubah Banyak)
 
Makalah aturan trapesium
Makalah aturan trapesiumMakalah aturan trapesium
Makalah aturan trapesium
 
Relasi Rekurensi
Relasi RekurensiRelasi Rekurensi
Relasi Rekurensi
 
Basis dan Dimensi
Basis dan DimensiBasis dan Dimensi
Basis dan Dimensi
 
Bab 1. Sistem Bilangan Real
Bab 1. Sistem Bilangan RealBab 1. Sistem Bilangan Real
Bab 1. Sistem Bilangan Real
 
operasi pada fungsi
operasi pada fungsioperasi pada fungsi
operasi pada fungsi
 
Interpolasi lagrange dan newton
Interpolasi lagrange dan newtonInterpolasi lagrange dan newton
Interpolasi lagrange dan newton
 
Contoh soal dan penyelesaian metode biseksi
Contoh soal dan penyelesaian metode biseksiContoh soal dan penyelesaian metode biseksi
Contoh soal dan penyelesaian metode biseksi
 

Similar to OPTIMASI REKURSI

Recursive pertemuan 5
Recursive pertemuan 5Recursive pertemuan 5
Recursive pertemuan 5Basiroh M.Kom
 
13_Rekursif.pptx
13_Rekursif.pptx13_Rekursif.pptx
13_Rekursif.pptxSapaFilut
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahBraga Rezpect
 
Rekursi dan relasi rekurens
Rekursi dan relasi rekurensRekursi dan relasi rekurens
Rekursi dan relasi rekurensLeonardo024
 
Presentation
PresentationPresentation
PresentationAiny Sara
 
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01Matematika Diskrit - 05 rekursi dan relasi rekurens - 01
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01KuliahKita
 
MAKALAH REKRUSIF (DIKI CANDRA).docx
MAKALAH REKRUSIF (DIKI CANDRA).docxMAKALAH REKRUSIF (DIKI CANDRA).docx
MAKALAH REKRUSIF (DIKI CANDRA).docxDikicandra6
 
6 rekursif induksi matematik.pdf
6 rekursif  induksi matematik.pdf6 rekursif  induksi matematik.pdf
6 rekursif induksi matematik.pdfNestyoRizky
 
Bab 8 struktur rekursif
Bab 8 struktur rekursifBab 8 struktur rekursif
Bab 8 struktur rekursifrisal07
 
Algoritma dan Strukutr Data - rekursi
Algoritma dan Strukutr Data - rekursiAlgoritma dan Strukutr Data - rekursi
Algoritma dan Strukutr Data - rekursiGeorgius Rinaldo
 
4 rekursi
4 rekursi4 rekursi
4 rekursiYu Nita
 
Kelas XI BAB 2 Berpikir Komputasional.pptx
Kelas XI BAB 2 Berpikir Komputasional.pptxKelas XI BAB 2 Berpikir Komputasional.pptx
Kelas XI BAB 2 Berpikir Komputasional.pptxPanjiLaras2
 
Jeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman LanjutJeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman LanjutIndividual Consultants
 

Similar to OPTIMASI REKURSI (17)

Recursive pertemuan 5
Recursive pertemuan 5Recursive pertemuan 5
Recursive pertemuan 5
 
13_Rekursif.pptx
13_Rekursif.pptx13_Rekursif.pptx
13_Rekursif.pptx
 
Tistrukdat9
Tistrukdat9Tistrukdat9
Tistrukdat9
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Rekursi dan relasi rekurens
Rekursi dan relasi rekurensRekursi dan relasi rekurens
Rekursi dan relasi rekurens
 
Presentation
PresentationPresentation
Presentation
 
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01Matematika Diskrit - 05 rekursi dan relasi rekurens - 01
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01
 
207 p06
207 p06207 p06
207 p06
 
MAKALAH REKRUSIF (DIKI CANDRA).docx
MAKALAH REKRUSIF (DIKI CANDRA).docxMAKALAH REKRUSIF (DIKI CANDRA).docx
MAKALAH REKRUSIF (DIKI CANDRA).docx
 
Pertemuan 6 Rekursif
Pertemuan 6 RekursifPertemuan 6 Rekursif
Pertemuan 6 Rekursif
 
6 rekursif induksi matematik.pdf
6 rekursif  induksi matematik.pdf6 rekursif  induksi matematik.pdf
6 rekursif induksi matematik.pdf
 
Bab 8 struktur rekursif
Bab 8 struktur rekursifBab 8 struktur rekursif
Bab 8 struktur rekursif
 
Algoritma dan Strukutr Data - rekursi
Algoritma dan Strukutr Data - rekursiAlgoritma dan Strukutr Data - rekursi
Algoritma dan Strukutr Data - rekursi
 
4 rekursi
4 rekursi4 rekursi
4 rekursi
 
Python 101: Recursion
Python 101: RecursionPython 101: Recursion
Python 101: Recursion
 
Kelas XI BAB 2 Berpikir Komputasional.pptx
Kelas XI BAB 2 Berpikir Komputasional.pptxKelas XI BAB 2 Berpikir Komputasional.pptx
Kelas XI BAB 2 Berpikir Komputasional.pptx
 
Jeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman LanjutJeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman Lanjut
 

OPTIMASI REKURSI

  • 2. Definisi • Recursive = Berulang • Recursive function = fungsi rekirsif = fungsi yang berulang • di dalam fungsi tersebut dia memanggil dirinya sendiri
  • 3. Fungsi Rekursif • Fungsi rekursif: Di dalamnya terdapat pernyataan yang memanggil dirinya sendiri. • Berguna untuk memecahkan masalah yang dapat didefinisikan secara rekursif pula. • n faktorial atau n! = n * n-1 * n-2 * …. * 3 * 2 * 1, dan didefiniskan bahwa 0! = 1 • Contoh:  3! = 3 * 2 * 1  4! = 4 * 3 * 2 * 1  4! = 4 * 3!  n! = n * (n-1)! 3
  • 4. Faktorial (n) atau n! didefinisikan sebagai berikut : jika n = 0, n! = 1 jika n > 0, n! = n * (n-1)! 4! = 4 * 3! 3! = 3 * 2! 2! = 2 * 1! 1! = 1* 0! 0! = 1 Jadi: 4! = 4*3*2*1= 24
  • 5. Fungsi Iteratif 4! = 4*3! = 4*3*2! = 4*3*2*1! = 4*3*2*1 = 24 // iteratif dekremental long faktorialIteratifDec(long n) mulai long i, faktorial = 1; for(i=n; i>=1; i--) faktorial *= i; return faktorial; selesai tutup 4! = 1*2*3*4 = 24 // iteratif inkremental long faktorialIteratifInc(long n){ mulai long i, faktorial = 1; for(i=1; i<=n; i++) faktorial *= i; return faktorial; selesai tutup 5
  • 6. Fungsi Rekursif • Contoh perhitungan 5 faktorial 5! (5 * 4!) (5 * (4 *3!)) (5 * (4 * (3 * 2!))) (5 * (4 * (3 * (2 * 1!)))) (5 * (4 * (3 * (2 * (1 * 0!))))) (5 * (4 * (3 * (2 * (1 * 1))))) (5 * (4 * (3 * (2 * 1)))) (5 * (4 * (3 * 2))) (5 * (4 * 6 )) (5 * 24) 120 6
  • 7. Fungsi Rekursif • Fungsi rekursif mempunyai dua komponen yaitu: – Base case: Mengembalikan nilai tanpa melakukan pemanggilan rekursi berikutnya. Rekursi berakhir jika base case dijumpai/dipenuhi – Recursion call / Reduction step: Memanggil fungsi rekursif di dalam fungsi rekursif di atas Menghubungkan sebuah fungsi rekursif dengan fungsi rekursif di dalamnya Biasanya memiliki keyword return untuk mengembalikan nilai ke fungsi yang memanggilnya 7
  • 8. Fungsi Rekursif • Fungsi faktorial – Base case: n = 0 – Reduction step: f(n) = n * f(n-1) // rekursif long faktorialRekursif(long n) mulai if(n==0) return (1); else return(n * faktorialRekursif(n-1)); selesai tutup 8
  • 9. Rekursif vs Iteratif • Contoh: • Faktorial - Rekursif long faktorial(long n) mulai if(n==0) return (1); else return(n*faktorial(n-1)); selesai tutup • Faktorial - Iteratif // dekremental long faktorial(long n) mulai long i, faktorial = 1; for(i=n; i>=1; i--) faktorial *= i; return faktorial; selesai tutup 9
  • 10. Rekursif vs Iteratif Rekursif Iteratif Pengulangan dengan struktur seleksi (ifelse) dan pemanggilan fungsi (dirinya sendiri) -> rekursi Pengulangan berhenti saat base case dijumpai/dipenuhi (konvergen terhadap base case) Pengulangan tanpa henti jika base case tidak pernah dijumpai/dipenuhi (tidak konvergen terhadap base case) Biaya proses lebih tinggi dengan pemanggilan banyak fungsi (butuh memori lebih besar & kerja prosesor lebih tinggi) Terbaca lebih jelas, model lebih dekat dengan masalah (contoh: faktorial, fibonacci) Pengulangan dengan struktur repetisi (for/while) Pengulangan berhenti saat kondisi pengulangan bernilai salah (false) Pengulangan tanpa henti jika kondisi pengulangan selalu benar Biaya proses lebih rendah (kebutuhan memori lebih kecil & kerja prosesor lebih rendah) karena proses pengulangan berada dalam satu fungsi Terbaca kurang jelas, model kurang dekat dengan masalah (contoh: faktorial, fibonacci) 10
  • 11. Kekurangan Rekursi • Meskipun penulisan program dengan cara rekursif bisa lebih jelas dan pendek, namun fungsi rekursif memerlukan : – Memori yang lebih banyak untuk mengaktifkan stack (memori yang digunakan untuk pemanggilan fungsi). – Waktu lebih lama untuk menjejaki setiap rekursi melalui stack. Apakah stack ? 11
  • 12. Kapan Rekursi? • Secara umum, hanya jika : – Penyelesaian sulit dilaksanakan secara iteratif – Efisiensi dengan cara rekursif masih memadai – Efisiensi bukan masalah dibandingkan dengan kejelasan logika program – Tidak mempertimbangkan faktor penghematan memori dan kecepatan eksekusi program Kecepatan kerja dan penghematan memori (iteratif) VS Perancangan logika yang baik (rekursif) 12
  • 13. Bilangan Fibonacci • Urutan bilangan 0, 1, 1, 2, 3, 5, 8, 13 … disebut bilangan Fibonacci. • Hubungan antara satu angka dengan angka berikutnya didefinisikan secara rekursif sebagai berikut : – Fib(n) = n, jika n = 0 atau 1 – Fib(n) = Fib(n-2) + Fib(n-1) , jika n >= 2 13
  • 14. • Misalkan jika ditanya berapa suku ke-4 dari barisan fibonachi? • n=4 fibo(4) = = fibo(3) + fibo(2) = (fibo(2) + fibo(1)) + (fibo(1) + fibo(0)) = ((fibo(1) + fibo(0)) + 1) + (1 + 0) = ((1 + 0) + 1) + 1 = (1 + 1) + 1 =2+1 =3
  • 15. Bilangan Fibonacci int Fib(int n) mulai int f; if(n==0) f = 0; else if(n==1) f = 1; else f = Fib(n-2) + Fib(n-1); return f; selesai tutup Fungsi fib() di atas ditulis secara rekursif dan disebut sebagai slow_Fib() Tulislah fast_Fib() jika menggunakan iterasi. 15
  • 16. Bilangan Fibonacci • Contoh : Skema fibonacci jika N=4 FIB (4) FIB (3) FIB (2) FIB (1) + + FIB (1) + FIB (2) FIB (1) + FIB (0) FIB (0) 16
  • 17. Latihan • Implementasikan algoritma rekursi untuk fungsi fibonaci dan rekursif!