Fibonacci adalah deretan angka yang disusun dari penjumlahan dua angka sebelumnya. Pada artikel ini, kita akan membuat program C++ Deret Fibonacci.
Program C++ Deret Fibonacci - Deret fibonacci adalah deretan angka yang disusun dari penjumlahan dua angka sebelumnya. Pada artikel ini, kita akan belajar membuat program C++ untuk membuat deret fibonacci.
Pendahuluan
Deret Fibonacci tersusun dari penjumlahan dua angka sebelumnya. Perhatikan susunan angka di bawah.
0, 1, 1, 2, 3, 5, 8, 13, 21, dst
F1 = deret fibonacci ke-1 = 0
F2 = deret fibonacci ke-2 = 1
F3 = deret fibonacci ke-3 = F(3-1) + F(3-2)
= F2 + F1
= 1 + 0
= 1
Dengan ini kita tahu bahwa rumus deret fibonacci adalah :
Fn = deret fibonacci ke-n = F(n-1) + F(n-2)
Dari rumus tersebut, mari kita coba cari deret Fibonacci ke-4.
F4 = deret fibonacci ke-4 = F(4-1) + F(4-2)
= F3 + F2
= 1 + 1
= 2
Baik, saya rasa cukup untuk penjelasan deret fibonacci. Sekarang kita menuju programnya. Ada dua versi program yang akan saya berikan, yaitu dengan looping ( perulangan ) dan dengan recursive function.
Program C++ Deret Fibonacci dengan Looping
Versi pertama kita gunakan metode yang mudah terlebih dahulu, yaitu looping. Looping yang saya gunakan adalah for loop. Berikut adalah program c++ deret fibonacci dengan for loop.
Program:
#include <iostream>
using namespace std;
int main()
{
// rumus : Fn = F(n-1) + F(n-2)
// deret fibonacci : 0, 1, 1, 2, 3, 5, 8, dst.
int n, Fn, Fn_min_1, Fn_min_2; // deklarasi variabel
cout << "_________________________________" << endl << endl;
cout << " Program C++ Deret Fibonacci " << endl;
cout << "_________________________________" << endl << endl;
cout << " Berapa jumlah deret ? "; cin >> n;
cout << endl << endl;
cout << " Fibonacci " << n << " deret : " << endl << endl;
cout << " ";
// devinisi value dari variabel
Fn_min_1 = 1;
Fn_min_2 = 0;
// perulangan sebanyak jumlah deret
for (int i = 1; i < n; i++){
if (i == 1) cout << Fn_min_2 << " ";
if (i == 2) cout << Fn_min_1 << " ";
else {
Fn = Fn_min_1 + Fn_min_2;
Fn_min_2 = Fn_min_1;
Fn_min_1 = Fn;
cout << Fn << " ";
}
}
cout << endl << endl << endl;
cout << "________www.onetekno.my.id_______" << endl << endl;
return 0;
}
Output :
_________________________________
Program C++ Deret Fibonacci
_________________________________
Berapa jumlah deret ? 10
Fibonacci 10 deret :
0 1 1 2 3 5 8 13 21 34
________www.onetekno.my.id_______
Penjelasan Program
int n, Fn, Fn_min_1, Fn_min_2; // deklarasi variabel
Penjelasan : Di bagian ini kita deklarasikan variabel yang akan kita gunakan dalam program. Karena nanti ada operasi penjumlahan, jadi kita gunakan tipe data interger.
Variabel untuk n menerima inputan berapa banyak angka dalam deretnya. Fn, Fn_min_1, Fn_min_2 adalah variabel untuk rumus fibonacci.
// devinisi value dari variabel
Fn_min_1 = 1;
Fn_min_2 = 0;
Penjelasan:
Di sini kita devinisikan variabel yang telah dideklarasikan sebelumnya. Fn_min_2 untuk deret ke -1 dan Fn_min_1 untuk deret ke-2.
Sehingga apabila dimasukkan ke dalam rumus menjadi :
Fn = Fn_min_1 + Fn_min_2
F3 = Fn_min_1 + Fn_min_2
F3 = 1 + 0
F3 = 1
Di program ini kita menggunakan kondisi if else.
for (int i = 1; i < n; i++){
if (i == 1) cout << Fn_min_2 << " ";
if (i == 2) cout << Fn_min_1 << " ";
else {
Fn = Fn_min_1 + Fn_min_2;
Fn_min_2 = Fn_min_1;
Fn_min_1 = Fn;
cout << Fn << " ";
}
}
Penjelasan:
# Pada looping pertama, variabel i bernilai 1. Jadi, jika (i = 1) maka tampilkan nilai dari Fn_min_2.
# Pada looping kedua, variabel i diincrementkan menjadi 2. Jadi, jika (i = 2) maka tampilkan nilai dari Fn_min_1.
# Pada looping ketiga dan seterusnya : else { code } dijalankan.
Nanti di dalam looping ke-3, value untuk Fn_min_1 = 1; dan Fn_min_1 = 2; kita ubah. Fn_min_1 = 1 diisi dengan value dari Fn dan value dari Fn_min_2 diisi dengan value dari Fn_min_1
Fn = Fn_min_1 + Fn_min_2; Fn_min_2 = Fn_min_1; Fn_min_1 = Fn;
Jadi setelah satu kali looping, value dari masing-masing variabel akan berubah. Sekarang menjadi :
Fn = 1; Fn_min_2 = 1; Fn_min_1 = 1;
Setelah itu kita perintahkan
cout << Fn ;
Dan pada looping berikutnya, Variabel Fn akan menjumlahkan 1 dan 1. Kemudian
Fn ditampilkan dengan value 2.
Dan proses ini akan terulang sampai kita menghasilkan deret fibonacci sebanyak n yang diinputkan.
Baik, semoga penjelasannya mudah dipahami ya! Mari kita ke metode ke dua, deret fibonacci menggunakan Fungsi Rekursif.
Program C++ Deret Fibonacci dengan Fungsi Rekursif
Fungsi rekursif adalah sebuah fungsi yang memanggil dirinya sendiri. Di program C++ Deret Fibonacci Rekursif ini kita membuat fungsi F() dengan tipe data interger. Dan di dalamnya, fungsi tersebut akan memanggil dirinya sendiri untuk diproses lagi.
Program :
#include <iostream>
using namespace std;
int F(int n){
if (n == 0 || n == 1) return n;
else {
return F(n-1) + F(n-2); // rekursif
}
}
int main()
{
// rumus : Fn = F(n-1) + F(n-2)
// deret fibonacci : 0, 1, 1, 2, 3, 5, 8, dst.
int n;
cout << "_________________________________" << endl << endl;
cout << " Program C++ Deret Fibonacci " << endl;
cout << " Fungsi Rekursif " << endl;
cout << "_________________________________" << endl << endl;
cout << " Berapa jumlah deret ? "; cin >> n;
cout << endl << endl;
cout << " Fibonacci " << n << " deret : " << endl << endl;
cout << " ";
// perulangan untuk memanggil fungsi F = fibonacci sebanyak n
for (int i = 0; i < n; i++){
cout << F(i) << " ";
}
cout << endl << endl << endl;
cout << "________www.onetekno.my.id_______" << endl << endl;
return 0;
}
Output :
_________________________________
Program C++ Deret Fibonacci
Fungsi Rekursif
_________________________________
Berapa jumlah deret ? 10
Fibonacci 10 deret :
0 1 1 2 3 5 8 13 21 34
________www.onetekno.my.id_______
Penjelasan Program
Yang berbeda di Program C++ Deret Fibonacci dengan Rekursif ini adalah penambahan fungsi F(int n).
int F(int n){
if (n == 0 || n == 1) return n;
else {
return F(n-1) + F(n-2); // rekursif
}
}
Penjelasan:
Ketika fungsi F(int n) dipanggil dengan inputan value dari looping for di fungsi main(), maka if else kondisi di dalam fungsi F() akan dicek.
Jika input int n = 0 atau int n = 1, maka kembalikan nilai n sebagai output.
Tapi jika input int n buka 0 atau 1, maka jalankan rekursif dan kembalikan nilai dari rekursif tersebut.
Untuk lebih memahami bagaimana proses yang terjadi, lihat yang di bawah ini!
F(n) = F(n-1) + F(n-2)
F(0) = 0 // dari If condition
F(1) = 1 // dari if condition
F(2) = F(1) + F(0) = 1 + 0 = 1
F(3) = F(2) + F(1)
= [F(1) + F(0)] + 1
= 1 + 0 + 1 = 2
F(5) = F(4) + F(3)
= [F(3) + F(2)] + [F(2) + F(1)]
= 2 + 1 + 1 + 1
= 5
dst.
Semoga bisa dipahami ya teman-teman!
Penutup
Silakan teman-teman bisa pilih mana yang lebih mudah. Terima kasih telah klik artikel ini, sampai jumpa di artikel Program C++ dari One Tekno lainnya.
Jika dirasa artikel ini bermanfaat, maka tak ada salahnya untuk dibagikan ke teman-teman yang lain. Semoga ini bisa membantu teman-teman dalam belajar C++ dan mengejakan tugas-tugas coding.