SlideShare a Scribd company logo
1 of 20
REKURSIF
ALGORITMA PEMROGRAMAN II
ALGORITMA REKURSIF
DEFINISI FUNGSI DEKLARASI
Pendahuluan
•Rekursi adalah sebuah teknik pengulangan yang
melibatkan dirinya sendiri.
•Dalam materi ini, rekursif digunakan dalam sebuah
fungsi.
•Umumnya proses rekursif ini berguna dalam permodelan
matematika pada sebuah program
Fungsi Rekursif
•Banyak fungsi matematis yang bisa didefinisikan sebagai
rekursif. Contoh:
1. faktorial
2. fibonacci
3. fourier
4. dll
Fungsi Rekursif
•Pada pendahuluan dijelaskan bahwa fungsi rekursif akan
melibatkan dirinya sendiri.
•Maksudnya: Pada pemrograman, fungsi akan
mengembalikan sebuah nilai. Dalam rekursif, hasil
kembalian fungsi dapat berupa nilai atau operasi
berikutnya dari fungsi itu sendiri sampai mencapai
kondisi tertentu.
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)!
Fungsi Rekursif
• 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 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
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
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
RekursifVs Iteratif
Contoh:
• Faktorial - Rekursif
long faktorial(long n)
mulai
if(n==0)
return (1);
else
return(n*faktorial(n-1));
selesai
tutup
RekursifVs Iteratif
Contoh:
• Faktorial - Iteratif
//decremental
long faktorial(long n)
mulai
long i, faktorial = 1;
for(i=n; i>=1; i--)
faktorial *= i;
return faktorial;
selesai
tutup
RekursifVs Iteratif
Rekursif
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)
RekursifVs Iteratif
Iteratif
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)
Kekurangan Rekursif
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.
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
Bilangan Fibonacci
• 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
Latihan!
•Implementasikan algoritma rekursi untuk fungsi
fibonaci dan rekursif!
Terima Kasih

More Related Content

What's hot

Modul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekModul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekWahyu Widodo
 
Pcd 05 - transformasi citra
Pcd   05 - transformasi citraPcd   05 - transformasi citra
Pcd 05 - transformasi citraFebriyani Syafri
 
Sistem Waktu Nyata (Real Time System)
Sistem Waktu Nyata (Real Time System)Sistem Waktu Nyata (Real Time System)
Sistem Waktu Nyata (Real Time System)rein sahren
 
Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyZaenal Khayat
 
membuat function dalam mysql
membuat function dalam mysqlmembuat function dalam mysql
membuat function dalam mysqlsukangimpi
 
Algoritma dan Struktur Data
Algoritma dan Struktur DataAlgoritma dan Struktur Data
Algoritma dan Struktur DataAs Faizin
 
Makalah n-queen problem
Makalah n-queen problemMakalah n-queen problem
Makalah n-queen problemEghan Jaya
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automataahmad haidaroh
 
Testing&implementasi 3
Testing&implementasi 3Testing&implementasi 3
Testing&implementasi 3aiiniR
 
Makalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas WidyatamaMakalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas WidyatamaDEDE IRYAWAN
 
MultiProgramming and Time Sharing
MultiProgramming and Time SharingMultiProgramming and Time Sharing
MultiProgramming and Time SharingTri Sugihartono
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Debby Ummul
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antaraGunawan Manalu
 
Analisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik KompilasiAnalisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik Kompilasiahmad haidaroh
 
Pengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi DigitalPengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi DigitalNur Fadli Utomo
 
Bagan terstruktur
Bagan terstrukturBagan terstruktur
Bagan terstrukturiimpunya3
 

What's hot (20)

Modul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekModul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi Objek
 
Algoritma penjadwalan proses
Algoritma penjadwalan prosesAlgoritma penjadwalan proses
Algoritma penjadwalan proses
 
Pcd 05 - transformasi citra
Pcd   05 - transformasi citraPcd   05 - transformasi citra
Pcd 05 - transformasi citra
 
SLIDE KE:5 NFA
SLIDE KE:5 NFASLIDE KE:5 NFA
SLIDE KE:5 NFA
 
Sistem Waktu Nyata (Real Time System)
Sistem Waktu Nyata (Real Time System)Sistem Waktu Nyata (Real Time System)
Sistem Waktu Nyata (Real Time System)
 
Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzy
 
teori Struktur data full
teori Struktur data fullteori Struktur data full
teori Struktur data full
 
membuat function dalam mysql
membuat function dalam mysqlmembuat function dalam mysql
membuat function dalam mysql
 
Algoritma dan Struktur Data
Algoritma dan Struktur DataAlgoritma dan Struktur Data
Algoritma dan Struktur Data
 
Makalah n-queen problem
Makalah n-queen problemMakalah n-queen problem
Makalah n-queen problem
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
 
Testing&implementasi 3
Testing&implementasi 3Testing&implementasi 3
Testing&implementasi 3
 
Fungsi (function)
Fungsi (function)Fungsi (function)
Fungsi (function)
 
Makalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas WidyatamaMakalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
 
MultiProgramming and Time Sharing
MultiProgramming and Time SharingMultiProgramming and Time Sharing
MultiProgramming and Time Sharing
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antara
 
Analisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik KompilasiAnalisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik Kompilasi
 
Pengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi DigitalPengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi Digital
 
Bagan terstruktur
Bagan terstrukturBagan terstruktur
Bagan terstruktur
 

Similar to Algoritma rekursif

Materi Rekrusif dengan Python PPTX (materi kuliah)
Materi Rekrusif dengan Python PPTX (materi kuliah)Materi Rekrusif dengan Python PPTX (materi kuliah)
Materi Rekrusif dengan Python PPTX (materi kuliah)OzanHacker
 
Algoritma dan Strukutr Data - rekursi
Algoritma dan Strukutr Data - rekursiAlgoritma dan Strukutr Data - rekursi
Algoritma dan Strukutr Data - rekursiGeorgius Rinaldo
 
Recursive pertemuan 5
Recursive pertemuan 5Recursive pertemuan 5
Recursive pertemuan 5Basiroh M.Kom
 
Presentation
PresentationPresentation
PresentationAiny Sara
 
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
 
Javascript function
Javascript   functionJavascript   function
Javascript functionguestd57670
 
TUGAS PPT- PEMROG DELPHI-YAN KURNIAWAN.pptx
TUGAS PPT- PEMROG DELPHI-YAN KURNIAWAN.pptxTUGAS PPT- PEMROG DELPHI-YAN KURNIAWAN.pptx
TUGAS PPT- PEMROG DELPHI-YAN KURNIAWAN.pptxyankurniawan7
 
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python 19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python 19175016SEKARSETYANI
 
Pertemuan 9 (rekursife)
Pertemuan 9 (rekursife)Pertemuan 9 (rekursife)
Pertemuan 9 (rekursife)biedoen
 
C programming language notes (7)
C programming language notes (7)C programming language notes (7)
C programming language notes (7)nakomuri
 
#4 Introduction Functional Programming in Kotlin.pptx
#4 Introduction Functional Programming in Kotlin.pptx#4 Introduction Functional Programming in Kotlin.pptx
#4 Introduction Functional Programming in Kotlin.pptxGDSC2
 

Similar to Algoritma rekursif (20)

Materi Rekrusif dengan Python PPTX (materi kuliah)
Materi Rekrusif dengan Python PPTX (materi kuliah)Materi Rekrusif dengan Python PPTX (materi kuliah)
Materi Rekrusif dengan Python PPTX (materi kuliah)
 
Algoritma dan Strukutr Data - rekursi
Algoritma dan Strukutr Data - rekursiAlgoritma dan Strukutr Data - rekursi
Algoritma dan Strukutr Data - rekursi
 
Recursive pertemuan 5
Recursive pertemuan 5Recursive pertemuan 5
Recursive pertemuan 5
 
Presentation
PresentationPresentation
Presentation
 
Bab 8 rekursif
Bab 8 rekursifBab 8 rekursif
Bab 8 rekursif
 
13_Rekursif.pptx
13_Rekursif.pptx13_Rekursif.pptx
13_Rekursif.pptx
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Javascript function
Javascript   functionJavascript   function
Javascript function
 
Tistrukdat9
Tistrukdat9Tistrukdat9
Tistrukdat9
 
Python 101: Recursion
Python 101: RecursionPython 101: Recursion
Python 101: Recursion
 
TUGAS PPT- PEMROG DELPHI-YAN KURNIAWAN.pptx
TUGAS PPT- PEMROG DELPHI-YAN KURNIAWAN.pptxTUGAS PPT- PEMROG DELPHI-YAN KURNIAWAN.pptx
TUGAS PPT- PEMROG DELPHI-YAN KURNIAWAN.pptx
 
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python 19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python
 
Function dalam PHP
Function dalam PHPFunction dalam PHP
Function dalam PHP
 
Pertemuan 9 (rekursife)
Pertemuan 9 (rekursife)Pertemuan 9 (rekursife)
Pertemuan 9 (rekursife)
 
program pascal kereta
program pascal keretaprogram pascal kereta
program pascal kereta
 
Function pada PHP
Function pada PHPFunction pada PHP
Function pada PHP
 
C programming language notes (7)
C programming language notes (7)C programming language notes (7)
C programming language notes (7)
 
Presentasi pertemuan3
Presentasi pertemuan3Presentasi pertemuan3
Presentasi pertemuan3
 
#4 Introduction Functional Programming in Kotlin.pptx
#4 Introduction Functional Programming in Kotlin.pptx#4 Introduction Functional Programming in Kotlin.pptx
#4 Introduction Functional Programming in Kotlin.pptx
 
Pertemuan 6 Rekursif
Pertemuan 6 RekursifPertemuan 6 Rekursif
Pertemuan 6 Rekursif
 

Algoritma rekursif

  • 3. Pendahuluan •Rekursi adalah sebuah teknik pengulangan yang melibatkan dirinya sendiri. •Dalam materi ini, rekursif digunakan dalam sebuah fungsi. •Umumnya proses rekursif ini berguna dalam permodelan matematika pada sebuah program
  • 4. Fungsi Rekursif •Banyak fungsi matematis yang bisa didefinisikan sebagai rekursif. Contoh: 1. faktorial 2. fibonacci 3. fourier 4. dll
  • 5. Fungsi Rekursif •Pada pendahuluan dijelaskan bahwa fungsi rekursif akan melibatkan dirinya sendiri. •Maksudnya: Pada pemrograman, fungsi akan mengembalikan sebuah nilai. Dalam rekursif, hasil kembalian fungsi dapat berupa nilai atau operasi berikutnya dari fungsi itu sendiri sampai mencapai kondisi tertentu.
  • 6. 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)!
  • 7. Fungsi Rekursif • 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. RekursifVs Iteratif Contoh: • Faktorial - Rekursif long faktorial(long n) mulai if(n==0) return (1); else return(n*faktorial(n-1)); selesai tutup
  • 12. RekursifVs Iteratif Contoh: • Faktorial - Iteratif //decremental long faktorial(long n) mulai long i, faktorial = 1; for(i=n; i>=1; i--) faktorial *= i; return faktorial; selesai tutup
  • 13. RekursifVs Iteratif Rekursif 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)
  • 14. RekursifVs Iteratif Iteratif 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)
  • 15. Kekurangan Rekursif 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.
  • 16. 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
  • 17. Bilangan Fibonacci • 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
  • 18. 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
  • 19. Latihan! •Implementasikan algoritma rekursi untuk fungsi fibonaci dan rekursif!