[D]eret fibonacci adalah suatu deret yang angka berikutnya didapatkan dengan cara menjumlahkan 2 angka berderet sebelumnya. Deret ini memiliki angka mula-mula 0 dan 1 atau 1 dan 1.
Dengan aturan seperti itu maka akan didapatkan deret sebagai berikut
1 2 3 |
0,1,1,2,3,5,8,13,21,34 ... ... //atau 1,1,2,3,5,8,13,21,34 ... ... |
Dari definisi yang saya kemukakan di atas dapat dipahami bagaimana algoritma untuk mendapatkan deret ini, terlebih dengan adanya contoh deret tersebut baik dengan nilai awal 0 dan 1 maupun nilai awal 1 dan 1 maka saya rasa sudah jelas sekali.
Biar lebih jelas berikut saya jabarkan algoritma yang nanti akan kita terapkan
1. Dibutuhkan 3 variabel yaitu past, current dan fibonacci. past digunakan untuk menyimpan nilai yang berada di belakang angka sekarang. current untuk menyimpan angka sekarang yaitu angka terakhir pada deret, dan fibonacci digunakann untuk menyimpan angka fibonacci selanjutnya yaitu past+current.
misal:
1 |
1,1,2,3,5,8 |
maka past=5 dan current=8.
2. Kita butuh nilai awal yaitu 0 dan 1 tanpa ini apa yang mau dijumlahkan. Masukkan nilai awal ke sebuah list
3. Untuk mendapatkan deret membutuhkan for loop.
4. Fibonacci didapatkan dengan penjumlahan variabel past dan current kemudian nilai current=fibonacci dan nilai past=current karena adanya pergeseran posisi past dan current kebelakang.
misal:
1 |
1,1,2,3,5,8 |
past=5 dan current=8
fiboncci=5+8=11
deret menjadi
1 |
1,1,2,3,5,8,11 |
past=8 dan current=11
5. Setelah fibonacci didapatkan, masukkan ke dalam list
Jika diterjemahkan ke bahasa Java maka akan menjadi seperti kode di bwah ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package com.agungsetiawan.interview; import java.util.ArrayList; import java.util.List; public class Fibonacci { private int pass=0; private int current=1; private int fibonacci; private List<Integer> list=new ArrayList<Integer>(); public Fibonacci(){ list.add(0); list.add(1); } public List<Integer> getFibonacci(int limit){ for(int i=0;i<limit-2;i++){ fibonacci=current+pass; pass=current; current=fibonacci; list.add(fibonacci); } return list; } } |
Cukup jelas saya rasa kode di atas. Di bawah adalah penggunaan kelas di atas sebagai objek.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
package com.agungsetiawan.interview; import com.agungsetiawan.interview.stack.Stack; import java.util.List; public class App { public static void main( String[] args ) { Fibonacci fibonacci=new Fibonacci(); List<Integer> list=fibonacci.getFibonacci(10); for(Integer i:list){ System.out.print(i+", "); } } } |
Output
1 |
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, |
5+8=13
Pak kalau boleh tau bahasa pemrograman yang paling awal Bapa seriusin apa ya? soalnya saya liat di website bapa hampir semuanya di posting sama Bapa hehe
Dulu awal C sekadar untuk paham variabel, stuktur kontrol, perulangan, function.
Setelah itu desktop .NET (C#), terus PHP sedikit untuk web, .NET untuk web (ASP.NET) kemudian belajar Java, akhirnya balik lagi ke .NET.
Sekarang untuk kegiatan profesional saya pakai .NET sambil ingin belajar Ruby (dan Ruby on Rails)
makasih pak ilmunya