Dalam pelajaran matematika, bilangan Fibonacci adalah barisan yang didefinisikan sebagai berikut:
Persamaan F(n) dapat dijelaskan sebagai berikut :
Jika n=0, maka F(0)=0
Jika n=1, maka F(1)=1
Jika n>1 berlaku rumus F(n-1) + F(n-2)
Jika n=2, maka F(2-1) + F(2-2) = F(1) + F(0) = 1 + 0 = 1
Jika n=3 maka F(3-1) + F(3-2) = F(2) + F(1) = 1 + 1 = 2
Jika n =4 maka F(4-1) + F(4-2) = F(3) + F(2) = 2 + 1 = 3
Dst
Hasil deret bilangan Fibonacci adalah : 0,1,1,2,3, dst
Kesimpulan :
Untuk n lebih besar dari 1, maka nilainya adalah merupakan hasil penjumlahan dari 2 bilangan yang ada di depannya. Dengan aturan ini, maka barisan bilangan Fibonaccci adalah sebagai berikut:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946...
Untuk n >1, maka rumus F(n-1) + F(n-2) selalu digunakan ketika nilai n berubah. Karena itu, F(n-1) + F(n-2) dibuat menjadi sebuah fungsi. Ketika nilai n bertambah di dalam fungsi, maka nilai tersebut dikirim ke dalam fungsinya dengan cara passing by value ketika memanggil dirinya sendiri.
Program C++ rekursif deret Fibonacci :
#include iostream.h
#include conio.h
int fibo(int n)
{
if(n==0)
return 0;
else if(n==1)
return 1;
else
//fungsi rekursif
return fibo(n-1)+fibo(n-2);
}
int main()
{ clrscr();
int bil;
cout<<"\nFungsi Rekursif untuk mencari Bilangan Fibonacci ke-n"<
cout<<"\nMasukkan bilangan suku ke-n = ";
cin>>bil;
//pemanggilan fungsi
cout<<"Fibonacci("<
getche();
return 0;
}
Output program :
Program di atas hanya mencari suku ke-n dari deret Fibonacci. Bagaimana jika kita ingin mencetak deret Fibonacci mulai suku pertama hingga suku ke-n?
Untuk mencetak deret ficonacci, maka kita harus mengirim nilai n mulai dari 0 hingga suku ke-n. Dalam program, suku ke-n dinyatakan dengan variable bil. Untuk mengirim nilai n mulai dari 0 hingga bil, maka kita menggunakan perulangan for. Dengan perulangan for, fungsi fibo akan dipanggil ketika nilai berubah dan hasil dikirim kembali ke fungsi main dan langsung dicetak.
Program untuk mencetak deret fobonacci adalah sebagai berikut :
#include iostream.h
#include conio.h
int fibo(int n)
{
if(n==0)
return 0;
else if(n==1)
return 1;
else
//fungsi rekursif
return fibo(n-1)+fibo(n-2);
}
int main()
{ clrscr();
int bil;
Kok munculnya gk sama ya gan? Apa rumusnya itu kurang lengkap?
BalasHapuscoba cek kode program yang anda ketik, mungkin ada yang kurang gan. Copy paste saja kode programnya, biar tidak ada bedanya.
BalasHapusSelamat mencoba gan, semoga berhasil,
kak, kalau deretnya seperti ini gmn?
BalasHapus1,2,3,6,5,10,7,14,9,8,11,22 dst
1,2,3,6,5,10,7,14,9,18,11,22
HapusJika deret dimulai dari i= 1 hingga suku ke n, maka
suku ke n ganjil adalah i.
suku ke n genap, untuk 2=2,adalah i dan untuk n>2 adalah n(i-2) + 4
Misalnya
suke ke 6 :
Nilainya adalah n(6-2) + 4 = n(4) + 4 = 6 + 4 = 10
Jadi suku 6 nilainya 10
suke ke 8 :
Nilainya adalah n(8-2) + 4 = n(6) + 4 = 10 + 4 = 14
Jadi suku 8 nilainya 14
dst
semoga bermanfaat
Mas listingnya ada yg kurang ya ? kok saya kompilasi ada yang error.
BalasHapuserrornya gimana mas
HapusSintaks nya ada yang ke hapus
BalasHapus. Semua kodenya sdh ada mas. Coba dicek mas, tolong kasih info pada bagian mana atau errornya gmn. thanks
Hapusnice
BalasHapusthx admin,,, sring" berbagi share ia tntng pnjlasan logika dari programm nya :D
BalasHapus