Program C++ Deret Fibonacci dengan Looping dan Rekursif

Share:

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 dengan Looping dan Recursive

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 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. 

Share:
No Comment

In this article:

No Comment
x