HRMlblCMFqqInfU78c3NMJxDetM02ycHTU9BqBl9

Program Mencetak Barisan Bilangan Lucas Menggunakan Bahasa C

Program Menampilkan dan Menghitung Barisan Bilangan Lucas Menggunakan Bahasa C

hobingoding.com - Halo coders. Dalam pelajaran matematika terutama dalam materi barisan dan deret bilangan, terdapat beberapa macam contoh / jenis barisan dan deret bilangan yang mungkin telah kamu pelajari sewaktu SMP / SMA.

Sesuai dengan judul postingan saya kali ini saya disini akan membahas bagaimana caranya membuat program untuk menampilkan sekaligus menghitung jumlah barisan bilangan Lucas dengan menggunakan bahasa pemgrograman bahasa C. Sebelumnya perlu kamu ketahui bahwasannya bilangan Lucas itu sendiri memiliki barisan bilangan: 2, 1, 3, 4, 7, 11, ..., dst. Adapun ketentuan / rumus untuk barisan bilangan Lucas itu sendiri dapat kamu lihat pada gambar di bawah ini:

Rumus Bilangan Lucas
Rumus bilangan Lucas, sumber Wikipedia.

Permasalahan

Buatlah program untuk menampilkan barisan bilangan Lucas sebanyak n kemudian hitung totalnya.

Test Case

Input Panjang Barisan : 7
Barisan Bilangan Lucas : 2 1 3 4 7 11 18 29
Total : 75

Kode Program

#include <stdio.h>

int lucas(int a) {
    if(a == 0)
        return (2);
    if(a == 1)
        return (1);
    else
        return lucas(a-1) + lucas(a-2);
}

int main() {
    int panjang_barisan, i;
    int total = 0;

    printf("Program Menampilkan dan Menghitung Barisan Bilangan Lucas\n");
    printf("visit us hobingoding.com\n\n");
    // Input Panjang Barisan
    printf("Input Panjang Barisan : ");
    scanf("%d", &panjang_barisan);

    // Barisan Bilangan Lucas
    printf("Barisan Bilangan Lucas : ");
    for(i = 0; i <= panjang_barisan; i++) {
        printf("%d ", lucas(i));
        total += lucas(i);
    }
    printf("\n");
    printf("Total : %d", total);
    return 0;
}

Lihat source code melalui github: fandipres

Output Program

Program Bahasa C Menampilkan dan Menghitung Barisan Bilangan Lucas

Penjelasan Program

Saya disini membuat sebuah fungsi rekursif yang saya beri nama lucas (int lucas(int a)) yang dimana nantinya fungsi ini akan menerima sebuah nilai dari fungsi utama (int main) lalu fungsi ini akan memproses nilai tersebut ke dalam beberapa kondisi yang ada.

Adapun kondisi yang saya buat dalam fungsi ini sesuai dengan ketentuan / rumus barisan bilangan Lucas yang ada di atas yaitu fungsi ini akan mengembalikan nilai 2 ke fungsi utama jika nilai yang dikirimkan dari fungsi utama bernilai 0, kemudian fungsi ini akan mengembalikan nilai 1 ke fungsi utama jika nilai yang dikirimkan ke fungsi ini bernilai 1 dan terakhir fungsi ini akan menjumlahkan 2 nilai sebelumnya jika nilai yang dikirim ke dalam fungsi ini bernilai lebih dari 1.

Kemudian saya menggunakan perulangan sebanyak n-1 dengan nilai awalan i = 0 untuk menentukan nilai yang akan dikirimkan ke fungsi lucas. Semisal jika n = 4, maka perulangan i akan menjadi 0 1 2 3 yang mana:
ketika i = 0, maka akan dicetak 2;
ketika i = 1, maka akan dicetak 1;
ketika i = 2, maka akan dicetak 3, 3 ini didapat dari  1 (nilai ketika i = a = 1) + 2 (nilai ketika i = a = 0);
dan terakhir ketika i = 3 maka akan dicetak 4, 4 ini didapat dari 3 (nilai ketika i = a = 2) + 1 (nilai ketika i = a = 1).

Adapun untuk mencetak barisan di atas saya menggunakan printf("%d ", lucas(i)); yang mana nilai i disini akan selalu bertambah sesuai banyaknya perulangan, sekaligus mengirimkan dan menerima kembali nilai i yang telah diproses pada fungsi lucas.

Kemudian saya gunakan variabel total yang telah saya deklarasikan sebelumnya untuk menghitung jumlah dari barisan bilangan lucas ini. Saya membuat kode program total += lucas(i); untuk menghitung nilai i yang akan dikembalikan dari fungsi lucas menuju fungsi utama.

Terakhir untuk mencetak nilai daripada variabel total saya letakkan di luar daripada perulangan agar total barisan bilangan Lucas di atas hanya dicetak sekali saja. Semoga bermanfaat dan jika kamu memiliki pertanyaan silahkan tanyakan pada kolom komentar di bawah ini.

Related Posts
Fandi Presly Simamora
Lecturer, code lover, technology enthusiast, enjoys sharing various things through writing, and of course, just a regular human being. Hello world :)

Related Posts

Posting Komentar