Tutorial PHP: Cara Membuat Deret Fibonacci dengan PHP

Membuat kode program untuk deret fibonacci hampir selalu hadir di dalam tugas maupun latihan tentang algoritma dan pemrograman. Biasanya deret ini diajarkan bersamaan dengan pengantar bahasa pemograman Pascal maupun C/C++ pada kuliah semester awal jurusan IT/Ilmu Komputer.

Dalam tutorial belajar PHP kali ini, saya akan mencoba membuat kode program untuk deret fibonacci menggunakan PHP.


Pengertian Deret Fibonacci

Deret Fibonacci adalah susunan angka unik dimana angka berikutnya berasal dari 2 angka sebelumnya. Berikut contoh urutan deret fibonacci:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765,…

Sebagai contoh, angka 5 didapat dari penjumlahan 2 deret sebelumnya (2+3), angka 8 didapat dari 5+3, angka 13 didapat dari 8+5, dst.

Mengutip dari wikipedia, berdasarkan buku The Art of Computer Programming karya Donald E. Knuth, barisan ini pertama kali dijelaskan oleh matematikawan India, Gopala dan Hemachandra pada tahun 1150, ketika menyelidiki berbagai kemungkinan untuk memasukkan barang-barang ke dalam kantong.

Di dunia barat, barisan ini pertama kali dipelajari oleh Leonardo da Pisa, yang juga dikenal sebagai Fibonacci (sekitar 1200), ketika membahas pertumbuhan ideal dari populasi kelinci. Oleh karena itulah deret ini dikenal dengan deret fibonacci.

Hal unik (dan sangat menakjubkan) tentang deret ini adalah: angka ini selalu muncul di alam. Seperti pola susunan kelopak bunga, pola susunan daun, pola ranting di pohon, pola susun pinus di buahnya, maupun pola kulit kerang.


Cara Membuat Program Deret Fibonacci

Kembali ke topik semula, jadi bagaimana cara membuat program PHP untuk menghasilkan deret fibonacci ini?

Seperti layaknya kode program untuk sebuah algoritma, terdapat banyak cara, misalnya dengan menggunakan rumus tertentu atau menggunakan fungsi rekursif. Kali ini saya akan mengunakan prinsip sederhana yang banyak digunakan untuk menghasilkan deret fibonacci.

Berikut adalah kode PHP yang diperlukan untuk membuat deret fibonacci:

<?php
// siapkan 2 angka awal
$angka_sebelumnya=0;
$angka_sekarang=1;
 
//tampilkan 2 angka awal
echo "$angka_sebelumnya $angka_sekarang";

for ($i=0; $i<10; $i++)
{
  // hitung angka yang akan ditampilkan
  $output = $angka_sekarang + $angka_sebelumnya;
  echo " $output";
 
  //siapkan angka untuk perhitungan berikutnya
  $angka_sebelumnya = $angka_sekarang;
  $angka_sekarang = $output;
}

// hasil: 
// 0 1 1 2 3 5 8 13 21 34 55 89
?>

Khusus untuk 2 angka awal deret, dibuat diluar perulangan, sedangkan sisanya akan diproses menggunakan perulangan for.

Agar dapat mengerti alur program diatas, silahkan lakukan perumpamaan mulai dari loop pertama, kemudian catat nilai dari tiap-tiap variabel: $output, $angka_sebelumnya dan $angka_sekarang.


Membuat Fungsi Deret Fibonnacci

Agar lebih praktis, saya akan memodifikasi kode kita sebelumnya agar menjadi fungsi PHP (function). Dengan demikian, kita bisa menentukan jumlah deret yang ingin ditampilkan. Berikut modifikasinya:

<?php
function print_deret_fibonacci($jumlah)
{
  // siapkan 2 angka awal
  $angka_sebelumnya=0;
  $angka_sekarang=1;
 
  //simpan string angka awal
  $hasil = "$angka_sebelumnya $angka_sekarang";

  for ($i=0; $i<$jumlah-2; $i++)
  {
    // hitung angka fibonacci
    $output = $angka_sekarang + $angka_sebelumnya;
    // hasilnya ditambahkan ke string $hasil
    $hasil = $hasil." $output";
 
    //siapkan angka untuk perhitungan berikutnya
    $angka_sebelumnya = $angka_sekarang;
    $angka_sekarang = $output;
  }
  return $hasil;
}
 
echo print_deret_fibonacci(8);
echo "<br>";
// hasil: 0 1 1 2 3 5 8 13

echo print_deret_fibonacci(10);
echo "<br>";
// hasil: 0 1 1 2 3 5 8 13 21 34

echo print_deret_fibonacci(20);
echo "<br>";
// hasil: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
?>

Kali ini hasil perhitungan disimpan ke dalam string $output. String $output inilah yang akan dikembalikan pada setiap pemanggilan fungsi print_deret_fibonacci().

Khusus untuk proses looping, kita harus mengurangi angka looping "$i<$jumlah-2" karena 2 angka pertama berada di luar proses looping for ini.

Bagaimana jika kita hanya butuh angka fibonacci pada urutan tertentu? Misalnya apakah angka untuk deret ke 27? Ini bisa didapat dengan sedikit modifikasi kode kita:

<?php
function cari_fibonacci($urutan)
{
  // siapkan 2 angka awal
  $angka_sebelumnya=0;
  $angka_sekarang=1;
 
  for ($i=0; $i<$urutan-1; $i++)
  {
    // hitung angka fibonacci
    $output = $angka_sekarang + $angka_sebelumnya;
 
    //siapkan angka untuk perhitungan berikutnya
    $angka_sebelumnya = $angka_sekarang;
    $angka_sekarang = $output;
  }
  return $output;
}
 
echo cari_fibonacci(5); // hasil: 5
echo "<br>";

echo cari_fibonacci(11); // hasil: 89
echo "<br>";

echo cari_fibonacci(30); // hasil: 832040
?>

Kali ini fungsi cari_fibonacci() akan mengembalikan nilai berupa angka fibonacci untuk urutan tersebut. Sebagai contoh, cari_fibonacci(30) akan mengembalikan nilai deret fibonacci pada urutan ke 30, yakni: 832040 .


Membuat Piramida Deret Fibonacci

Latihan terakhir yang sering dibuat menggunakan deret fibonacci adalah membuat "piramida" fibonacci. Idenya adalah dengan melakukan looping kedalam fungsi fibonacci yang telah kita buat sebelumnya.

Berikut kode yang dibutuhkan:

<?php
function print_deret_fibonacci($jumlah)
{
  // siapkan 2 angka awal
  $angka_sebelumnya=0;
  $angka_sekarang=1;
 
  //simpan string angka awal
  $hasil = "$angka_sekarang";

  for ($i=0; $i<$jumlah-1; $i++)
  {
    // hitung angka fibonacci
    $output = $angka_sekarang + $angka_sebelumnya;
    // hasilnya ditambahkan ke string $hasil
    $hasil = $hasil." $output";
 
    //siapkan angka untuk perhitungan berikutnya
    $angka_sebelumnya = $angka_sekarang;
    $angka_sekarang = $output;
  }
  return $hasil;
}
 
function piramida_fibonacci($tingkat){
  for ($i=1; $i<$tingkat+1; $i++)
  {
    echo print_deret_fibonacci($i);
    echo "<br>";
  }
}
 
piramida_fibonacci(10);

// hasil:
// 1
// 1 1
// 1 1 2
// 1 1 2 3
// 1 1 2 3 5
// 1 1 2 3 5 8
// 1 1 2 3 5 8 13
// 1 1 2 3 5 8 13 21
// 1 1 2 3 5 8 13 21 34
// 1 1 2 3 5 8 13 21 34 55
?>

Dalam kode diatas saya membuat fungsi piramida_fibonacci() yang di dalamnya akan memanggil fungsi print_deret_fibonacci().


Tutorial cara membuat deret fibonacci dengan PHP ini akan terasa rumit apabila anda belum memahami fungsi-fungsi dasar PHP seperti looping for, atau cara pembuatan fungsi. Selain itu, membuat algoritma untuk deret ini juga menjadi tantangan tersendiri. Tidak heran jika deret fibonacci ini sering digunakan untuk menguji kemampuan logis seorang (calon) programmer :)

8 Comments

  1. rangga
    04 Apr 16
  2. kevin
    31 Aug 16
  3. krisna
    06 Sep 17
  4. joko
    19 Jan 18
    • Andre
      21 Jan 18
  5. Assakam
    22 Jan 19

Add Comment

Leave a Reply to joko Cancel reply