Belajar Bahasa Pemrograman C++: Fungsi dan Rekursi
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:
- Fungsi bawaan (built-in function) → Seperti
cout
,cin
,sqrt()
,pow()
, dll. - 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:
- Base case → Kondisi yang menghentikan rekursi.
- 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++!