Barisan Bilangan Fibonacci – Implementasi Fungsi Rekursif Dalam Bahasa Pascal dan C

Anda pernah melihat barisan bilangan fibonacci? Jika belum, coba lihat dibawah ini.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …

Dalam tulisan kali ini, saya ingin membahas bagaimana untuk menampilkan barisan bilangan fibonacci untuk memahami salah satu ‘fitur’ dalam pemrograman yang disebut rekursi. Seperti artikel sebelumnya, saya akan membahasnya dalam bahasa Pascal dan C.

Pengertian rekursi dikutip dari wikipedia adalah sebagai berikut

“…is a method of defining functions in which the function being defined is applied within its own definition”

Implementasi fungsi rekursif biasanya diletakkan dalam suatu prosedur atau fungsi. Kali ini saya akan membahasnya dengan menuangkannya dalam sebuah fungsi. Fungsi ini didefinisikan sebagai berikut:

Nama fungsi ini adalah fib, yang menggunakan 1 parameter berupa angka dari 0 dan seterusnya.
Nilai dari fib(0) adalah 0
Nilai dari fib(1) adalah 1
Nilai dari fib(n) adalah sama dengan fib(n-1) + fib(n-2), untuk n >= 2

Bingung? Misalnya ditanyakan berapa fib(4)?

fib(n) = fib(n-1) + fib(n-2)
fib(4) = fib(3) + fib(2)
fib(3) = fib(2) + fib(1)
fib(2) = fib(1) + fib(0)

Karena fib(1) = 1 dan fib(0) = 0 (lihat definisi) maka:

fib(2) = 1 + 0 = 1
fib(3) = 1 + 1 = 2
fib(4) = 2 + 1 = 3

Bagaimana? Jadi nilai dari fib(4) adalah 3. Kini, mari kita definisikan dalam bahasa pascal.

function fib(n : integer) : integer
begin
  if (n = 0) then
    fib := 0
  else if (n = 1) then
    fib := 1
  else
    fib := fib(n-1) + fib(n-2);
end;

Untuk menguji apakah fungsi ini bisa dipakai atau belum, mari kita mulai blok utama untuk menampilkan nilai dari fungsi fib(0) sampai fib(10)

var i : integer;

{letakkan deklarasi fungsi disini}

begin
  for i := 0 to 10 do
    write(fib(i), ' ');
end.

Silakan uji outputnya. Kurang lebih akan seperti ini outputnya.

0 1 1 2 3 5 8 13 21 34 55

Nah, ini salinan program lengkapnya dalam bahasa Pascal

var
  i : integer;

function fib(n : integer) : integer;
begin
  if (n = 0) then
    fib := 0
  else if (n = 1) then
    fib := 1
  else
    fib := fib(n-1) + fib(n-2);
end;

begin
  for i := 0 to 10 do
    write(fib(i), ' ');
end.

Juga, ini salinan program lengkapnya dalam bahasa C

#include <stdio.h>;

int fib(int n);

int main() {
  int i = 0;

  while (i <= 10) {
    printf("%i ", fib(i));
    i++;
  }
}

int fib(int n) {
  if (n == 0) {
    return 0;
  } else  if (n == 1) {
    return 1;
  } else {
    return fib(n-1) + fib(n-2);
  }
}

Semoga bermanfaat.

5 comments

  1. R. ummah · February 7, 2011

    2, 3, 5, 8, 13, 21
    apakah bilangan nie termasuk barisan bilangan fibonacci???………

  2. Jam Tangan Couple · December 19, 2014

    sangat bermanfaat mas, tugas fibonaci rekursif saya jadi beres🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s