70 likes | 312 Views
Apakah Recursion itu ?. Dr. Anto Satriyo Nugroho, M.Eng Email: asnugroho@gmail.com Web: http://asnugroho.net/lecture/dp.html. Apakah Recursion itu ?. Perulangan proses pada sebuah fungsi, yang di dalamnya memanggil fungsi itu sendiri. Keuntungan: menyederhanakan sebuah proses yang kompleks
E N D
Apakah Recursion itu ? Dr. Anto Satriyo Nugroho, M.Eng Email: asnugroho@gmail.com Web: http://asnugroho.net/lecture/dp.html
Apakah Recursion itu ? • Perulangan proses pada sebuah fungsi, yang di dalamnya memanggil fungsi itu sendiri. • Keuntungan: menyederhanakan sebuah proses yang kompleks • Kapan dipakai ?Recursion dipakai pada sebuah struktur data yang apabila diambil sebagian daripadanya, akan diperoleh struktur data yang sama • Bahasa pemrograman yang memiliki kemampuan implementasi recursion: C,C++ • Bahasa pemrograman yang tidak memiliki kemampuan tsb.: Fortran • Argumen fungsi, maupun variabel yang dideklarasikan pada fungsi tersebut tidak memiliki address yang fixed. Alokasi memory baru dilakukan saat fungsi itu dipanggil. • Contoh populer: • Perhitungan factorial • Greatest Common Divisor/GCD (=FPB Faktor Persekutuan Terbesar) • Deret Fibonacci
① Perhitungan factorial int factorial(int n) { if(n==0) return 1; else return(n*factorial(n-1)); }
Perhitungan Factorial = n * factorial(n-1) factorial(n) = (n-1) * factorial(n-2) factorial(n-1) = (n-2) * factorial(n-3) factorial(n-2) … if(n==0) return 1; = 1 * factorial(0) factorial(1) 1 factorial(n) = n*(n-1)*(n-2)*(n-3)*…* 1
② GCD antara x dany int gcd(int x,int y) { if(y==0) return(x); else return gcd(y,x%y); } Cara ini disebut sebagai Euclidean Algorithmyang dikenal sebagai salah satu algoritma tertua 300 B.C.(7th book, Proposition 2) GCD : Greatest Common Divisor
gcd(75,54) = gcd(54,21) = gcd(21,12) = gcd(12, 9) = gcd( 9, 3) = gcd( 3, 0) gcd(75,54)= 3 21=75%54 12=54%21 9=21%12 3=12%9 0=9%3
Deret Fibonacci • 0,1,1,2,3,5,8,13,21,34,… • F(n)=F(n-1)+F(n-2) • F(1)=0 • F(2)=1 Tuliskan deret Fibonacci di atas memakai recursion !