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 factorial(n) = n * factorial(n-1) factorial(n-1) = (n-1) * factorial(n-2) factorial(n-2) = (n-2) * factorial(n-3) … if(n==0) return 1; factorial(1) = 1 * factorial(0) 1 factorial(n) = n*(n-1)*(n-2)*(n-3)*…* 1
② GCD antara x dan y int gcd(int x,int y) { if(y==0) return(x); else return gcd(y,x%y); } Cara ini disebut sebagai Euclidean Algorithm yang 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) 21=75%54 12=54%21 9=21%12 3=12%9 0=9%3
Deret Fibonacci Tuliskan deret Fibonacci di atas memakai recursion ! 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 !