-
Dari definisi fungsi berikut, berapa kalikah
F5(4)
dieksekusi pada pengeksekusianF5(8)
?function F5(n : integer) : integer; begin if (n = 1) or (n = 2) then F5 := 1 else F5 := F5(n - 1) + F5(n - 2); end;
-
Gunakan F5 pada soal nomor 29, berapa kalikah
F5(n-k)
dieksekusi pada pengeksekusian F5(n) (dengan n>k>2, notasikan jawaban anda dalam F5, n dan k)?
-
Fungsi akan memanggil secara rekursi dengan parameter n-1 dan n-2. Sehingga F5(8) = F5(7) + F5(6)
F5(7) = F5(6) + F5(5) [f5(6) dieksekusi sebanyak 2x oleh F5(8) dan F5(7)]
F5(6) = F5(5) + F5(4) [F5(5) dieksekusi oleh F5(7) dan F5(6). Karena F5(6) dieksekusi dua kali, maka F5(5) dieksekusi sebanyak 2+1 kali] F5(5) = F5(4) + F5(3), F5(4) dieksekusi oleh F5(6) dan F5(5). Sehingga total pemanggilan F5(4) adalah 2 + 3 = 5.Cara lain:
F5(8) dieksekusi sekali
F5(7) dieksekusi sekali oleh F5(8)
F5(6) dieksekusi oleh F5(8) dan F5(7), sehingga akan menjadi pola fibonacci yang dimulai dari n = 8:
1, 1, 2, 3, 5, 8, 13, (tidak berlaku untuk 1 karena 1 hanya dieksekusi ketika n = 3 saja). -
Misalkan g(x) adalah banyaknya F5(x) dieksekusi, maka: g(1) akan bernilai sama dengan F5(x), g(2) akan sama dengan F5(x-1). Jadi g(a) = F5(x-a+1), dengan F5(x) adalah pemanggilan awal.
Sehingga g(n-k) = F5(n-(n-k)+1) = F5(k+1).