140 likes | 498 Views
Algoritma Rekursif. Alpro-2. REKURSIF. alat/cara untuk memecahkan masalah dalam suatu fungsi atau procedure yang memanggil dirinya sendiri teknik pemecahan masalah yang powerful dan dapat digunakan ketika inti dari masalah terjadi berulang kali ( for, while dan do-while)
E N D
Algoritma Rekursif Alpro-2
REKURSIF • alat/cara untuk memecahkan masalah dalam suatu fungsi atau procedure yang memanggil dirinya sendiri • teknik pemecahan masalah yang powerful dan dapat digunakan ketika inti dari masalah terjadi berulang kali (for, while dan do-while) • subrutin yang memanggil dirinya sendiri, baik langsung maupun tak langsung. • subrutin rekursi bisa menyelesaikan tugas kompleks dalam beberapa baris perintah
Iterasi • Mrk • perkataan berulang-ulang • peralatan yang lebih efisien jika dibandingkan dengan rekursif tetapi recursion menyediakan solusi yang lebih baik untuk suatu masalah. • Jadi: • Pada rekursif, method dapat memanggil dirinya sendiri • Data yang berada dalam method tersebut seperti argument disimpan sementara kedalam stack sampai method pemanggilnya diselesaikan.
c/ Faktorial Faktorial (5) / \ Faktorial (4)*5 / \ Faktorial (3)*4 / \ Faktorial (2)*3 / \ Faktorial (1)*2 | 1 Algoritma: n!= n.(n-1)! , jika n>1 n!= 1 , jika n=0, 1 int Faktorial(int n) { if ((n == 0) || (n == 1 )) return (1); else return (n * Faktorial(n-1)); }
Bilangan Fibonacci • Baris dari n=1 1 1 2 3 5 8 13 21 34 • Algoritma (untuk n > 2): fn = fn-1 + fn-2 f1 = 1 f2 = 1 c/ n= 4 f4 = f3+f2 f4 = (f2+f1) + f2 f4 = (1+1) +1 f4 = 3 If (n ==1 || n==2) Then return (l) Else return (Fibonacci(n-1)+Fibonacci(n-2)) Endif
Kombinasi input n, r : integer If (n < r) Then return (0) Else return (Faktorial(n)/Faktorial(r)*Faktorial(n-r)) Endif
Permutasi input n, r : integer If (n< r) Then return (0) Else return (Faktorial(n) / Faktorial(n-r)) Endif
Studi Kasus-1: Output deretS =1+2+3+4+5+...+n input n:integer If (n==1) Then return (n) Else return (n + S(n-1)) Endif
Studi Kasus-2 Output deret S = 2+4+6+8+10+...+2n input n:integer If (n==1) Then return (2) Else return (2*n + S(n-1)) Endif