Belajar Bahasa Pemrograman C++: Fungsi dan Rekursi

Belajar Bahasa Pemrograman C++: Fungsi dan Rekursi
Photo by Mohammad Rahmani / Unsplash

Kalau kamu mulai belajar C++, salah satu konsep penting yang harus kamu pahami adalah fungsi (function) dan rekursi (recursion). Fungsi membuat kode lebih terstruktur, sedangkan rekursi adalah cara keren buat menyelesaikan masalah dengan pendekatan yang lebih simpel.

Nah, di artikel ini kita bakal bahas:
✅ Apa itu fungsi di C++
✅ Cara membuat fungsi di C++
✅ Apa itu rekursi dan cara kerjanya
✅ Contoh penggunaan fungsi dan rekursi

Yuk, langsung kita bahas!

Apa Itu Fungsi dalam C++?

Fungsi adalah blok kode yang bisa dipanggil berkali-kali untuk menjalankan tugas tertentu. Dengan fungsi, kita bisa:

  • Menghindari kode duplikat (kode lebih rapi dan efisien).
  • Membagi program menjadi bagian kecil yang lebih mudah dikelola.
  • Meningkatkan keterbacaan kode.

Di C++, ada dua jenis fungsi utama:

  1. Fungsi bawaan (built-in function) → Seperti cout, cin, sqrt(), pow(), dll.
  2. Fungsi buatan sendiri (user-defined function) → Fungsi yang kita buat sendiri sesuai kebutuhan.

Cara Membuat Fungsi di C++

Struktur Dasar Fungsi

tipe_data nama_fungsi(parameter) {
    // kode yang dijalankan
    return nilai; // (opsional, tergantung tipe data)
}

📌 tipe_data → Jenis nilai yang dikembalikan (int, float, void, dll).
📌 nama_fungsi → Nama unik untuk fungsi.
📌 parameter → Input yang diberikan ke fungsi (bisa kosong).

Contoh Fungsi Sederhana

#include <iostream>
using namespace std;

// Fungsi untuk mencetak pesan
void sapa() {
    cout << "Halo, selamat belajar C++!" << endl;
}

int main() {
    sapa(); // Memanggil fungsi
    return 0;
}

Output:

Halo, selamat belajar C++!

Fungsi sapa() dipanggil di dalam main(), sehingga kode dalam fungsi dieksekusi.

Fungsi dengan Parameter dan Return Value

Fungsi bisa menerima parameter dan mengembalikan nilai.

Contoh: Fungsi dengan Parameter

#include <iostream>
using namespace std;

// Fungsi dengan parameter
void sapa(string nama) {
    cout << "Halo, " << nama << "!" << endl;
}

int main() {
    sapa("Andi");
    sapa("Budi");
    return 0;
}

Output:

Halo, Andi!
Halo, Budi!

Setiap kali sapa(nama) dipanggil, kita bisa memberikan nama yang berbeda.

Contoh: Fungsi dengan Return Value

#include <iostream>
using namespace std;

// Fungsi untuk menghitung luas persegi
int hitungLuasPersegi(int sisi) {
    return sisi * sisi;
}

int main() {
    int hasil = hitungLuasPersegi(5);
    cout << "Luas persegi: " << hasil << endl;
    return 0;
}

Output:

Luas persegi: 25

Fungsi hitungLuasPersegi() menerima parameter sisi, lalu mengembalikan hasil perhitungan.

Apa Itu Rekursi dalam C++?

Rekursi adalah teknik pemrograman di mana sebuah fungsi memanggil dirinya sendiri. Biasanya, rekursi digunakan untuk:

  • Menyelesaikan masalah yang berulang, seperti faktorial, Fibonacci, dan pohon biner.
  • Menghindari loop yang terlalu kompleks.

Cara Kerja Rekursi

Rekursi selalu memiliki:

  1. Base case → Kondisi yang menghentikan rekursi.
  2. Recursive case → Bagian yang memanggil fungsi itu sendiri.

Contoh Rekursi di C++

1. Menghitung Faktorial dengan Rekursi

Faktorial dari n (n!) adalah hasil perkalian n × (n-1) × (n-2) ... × 1.

#include <iostream>
using namespace std;

// Fungsi rekursif untuk faktorial
int faktorial(int n) {
    if (n == 1) return 1; // Base case
    return n * faktorial(n - 1); // Recursive case
}

int main() {
    cout << "5! = " << faktorial(5) << endl;
    return 0;
}

Output:

5! = 120

Fungsi faktorial(5) akan memanggil faktorial(4), lalu faktorial(3), dan seterusnya sampai mencapai base case (n == 1).

2. Menghitung Bilangan Fibonacci dengan Rekursi

Deret Fibonacci adalah 0, 1, 1, 2, 3, 5, 8, ..., di mana setiap angka adalah hasil penjumlahan dua angka sebelumnya.

#include <iostream>
using namespace std;

// Fungsi rekursif untuk Fibonacci
int fibonacci(int n) {
    if (n == 0) return 0; // Base case
    if (n == 1) return 1; // Base case
    return fibonacci(n - 1) + fibonacci(n - 2); // Recursive case
}

int main() {
    cout << "Fibonacci ke-6: " << fibonacci(6) << endl;
    return 0;
}

Output:

Fibonacci ke-6: 8

Fungsi fibonacci(n) akan memanggil dirinya sendiri sampai mencapai base case (n == 0 atau n == 1).

Kapan Harus Pakai Rekursi?

✅ Gunakan rekursi kalau:

  • Masalah bisa dibagi menjadi sub-masalah yang lebih kecil.
  • Loop biasa terlalu kompleks.
  • Struktur data pohon (tree) atau graf (graph) digunakan.

❌ Hindari rekursi kalau:

  • Bisa diselesaikan dengan loop lebih efisien.
  • Terlalu banyak pemanggilan yang bisa menyebabkan stack overflow.

Kesimpulan

  • Fungsi di C++ memungkinkan kita membuat kode lebih modular dan rapi.
  • Fungsi bisa memiliki parameter dan return value.
  • Rekursi adalah teknik di mana sebuah fungsi memanggil dirinya sendiri.
  • Faktorial dan Fibonacci adalah contoh klasik rekursi.
  • Gunakan rekursi jika masalah bisa dipecah jadi lebih kecil.

Dengan memahami fungsi dan rekursi, kamu sudah satu langkah lebih dekat untuk menguasai C++!

Read more