Fibonacci Sequence di PHP
Hasil pembagian angka deret ke-(n + 1) dengan suku ke-n selalu sama yaitu 1.618 (berlaku di deret 13 dst) angka ini disebut golden ratio. Angka fibonacci juga memiliki keterkaitan dengan alam contohnya adalah cangkang kerang yang mirip dengan pola spiral fibonacci, bunga matahari yang memiliki putik bunga sesuai dengan deret fibonacci.
Beberapa minggu yang lalu saya mendapat job opportunity dari perusahaan asal India, sebagai syarat diterima diwajibkan mengikuti tes salah satunya adalah coding interview pada tes tersebut diberikan soal untuk membuat function deret fibonacci.
Seperti kita ketahui deret fibonacci memiliki angka sebagai berikut : 0,1,1,2,3,5,8,13,21 dst. Jika dilihat mulai deret ke 3 polanya mulai teratur yaitu :
- Nilai deret ke-3 merupakan penjumlahan dari deret ke-1 dan deret ke-2.
- Nilai deret ke-4 merupakan penjumlahan dari deret ke-2 dan deret ke-3
- Nilai deret ke-5 merupakan penjumlahan dari deret ke-3 dan deret ke-4. dst
Dari pola diatas dapat disimpulkan bahwa selain urutan ke-1 dan ke-2 nilai dari deret ke-_n_ adalah deret ke-_(n-2)+ deret ke-(n-1)_.
Jika kita terjemahkan rumus diatas ke dalam bahasa pemrogramman (penulis menggunakan PHP) sebagai berikut :
<?php
function fibonacci($n){
if($n==1){
return 0;
}
if($n==2){
return 1;
}
return fibonacci($n-2)+fibonacci($n-1);
}
>
Agar lebih mudah memahaminya anggap saja function($n)
merupakan rumus deret ke-_n_. Jadi jika nilai n = 1 akan mengembalikan nilai 0, jika nilai n=2 akan mengembalikan nilai 1. Selain itu kita akan akan memanggil recursive function (memanggil fungsi dirinya sendiri).
Jika nilai n=3 maka akan menjumlahkan function fibonacci
atau deret ke-1 dan ke-2 dimana nilai deret ke-1 dan ke-2 adalah 0 dan 1 jadi nilai deret ke 3 adalah 1. Dan seterusnya
Implementasi dari kode diatas adalah sebagai berikut, misalnya kita diminta untuk membuat 10 deret fibonacci
<?php
function fibonacci($n){
if($n==1){
return 0;
}
if($n==2){
return 1;
}
return fibonacci($n-2)+fibonacci($n-1);
}
for($i=1;$i<=10;$i++){
echo fibonacci($i).",";
}
?>
Jika kode diatas dijalankan akan menghasilkan output 0,1,1,2,3,5,8,13,21,34. Semoga penjelasan diatas dapat dipahami dan bermanfaat. Sekian dan terima kasih :).