DEPARTEMEN ILMU KOMPUTER FMIPA IPB 2011 Praktikum Bahasa Pemrograman
#4. Recursion Recursion is a procedure that calls itself PLT SCHEME
Example 1 (1) 3 Calculate nth power of some number m m x m n-1, for n>0 m n = 1,for n = 0 Functional (define (higher m n) (if (zero? n) 1 (* m (lower m (- n 1)))) ) (define (lower m n) (higher m n) ) (higher 2 3)
Example 1 (2) 4 Recursive (define (higher m n) (if (zero? n) 1 (* m (higher m (- n 1)))) ) * (higher 2 3)
Example 2 5 Fibonacci function f(n-1) + f(n-2), for n> 1 f(n) = 1, for n = 1 1, for n = 0 “fibo.ss” (define (fibonacci n) (if (or (= n 0) (= n 1)) 1 (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) ) * (fibonacci 4)
Exercises 1 6 Buatlah fungsi untuk menghitung jumlah elemen dalam list * (count-elements '(fast computer are nice)) 4 * (count-elements '()) 0 * (count-elements '(())) 1 * (count-elements '(fast computer () are nice)) 5 * (count-elements '(sqrt (expt x 2) (expt y 3))) 3
Example 3 7 Faktorial Faktorial(n) = 1 ; if n = 0 or 1 (n * Faktorial (n -1) ) ; if n > 1 Buatlah kode program dalam PLT SCHEME ?
Fungsi Apakah ini ? 8 Diberikan pseudocode sebagai Berikut ! int jumlah(int a, int b) { if (b==0) return a; else return 1+jumlah(a,b-1); } Tugas! 1. Terjemahkan ke dalam PLT SCHEME 2. Telusuri fungsi tersebut jika dipanggil dengan jumlah(3,2)
Exercises 2 9 Buatlah fungsi elemen-ke dari suatu list > (nth 3 '( )) 3 > (nth 0 '( )) error > (nth 5 '( )) 5 > (nth 6 '( )) error
Exercises 3 10 Buat fungsi remove-last untuk membuang elemen terakhir dari suatu list * (remove-last ‘(a b c)) (a b) * (remove-last '(a)) () * (remove-last '()) () Buat fungsi jumlah untuk menjumlahkan elemen yang bernilai genap dalam suatu list !