Gambar di bawah ini mengilustrasikan sifat panggilan diri berulang dari rekursi.
Rekursi berlanjut hingga kondisi dasar terpenuhi.
Untuk menghindari rekursi tak terbatas, pengawal bersyarat (misalnya, if…else) memastikan bahwa hanya satu cabang yang melakukan panggilan rekursif.
Contoh 1: Menghitung Faktorial Secara Rekursif
// Computes n! = 1 × 2 × … × n\n#include <iostream>\nusing namespace std;\n\nint factorial(int);\n\nint main()\n{\n int n, result;\n cout << \"Masukkan bilangan non-negatif: \";\n cin >> n;\n result = factorial(n);\n cout << \"Faktorial dari \" << n << \" = \" << result;\n return 0;\n}\n\nint factorial(int n)\n{\n if (n > 1)\n return n * factorial(n - 1);\n else\n return 1;\n}
Output
Masukkan bilangan non-negatif: 4\nFaktorial dari 4 = 24
Bagaimana Program Faktorial Bekerja
Fungsi factorial() berulang kali memanggil dirinya sendiri, setiap kali mengurangi n dengan satu. Ketika n jatuh ke bawah atau sama dengan 1, fungsi mengembalikan 1, dan rekursi terurai, menghasilkan hasil akhir.
Keuntungan dan Kerugian Menggunakan Rekursi dalam C++
Di bawah ini adalah keuntungan dan kerugian utama rekursi.
Keuntungan
Hasilkan kode yang ringkas dan ekspresif.
Penting untuk solusi alami untuk masalah yang melibatkan pohon, graf, dan pencarian kombinatorial.
Kerugian
Mengonsumsi lebih banyak ruang tumpukan daripada pendekatan iteratif yang setara.
Mungkin menimbulkan overhead prosesor tambahan.
Debugging bisa lebih menantang karena tumpukan panggilan yang dalam.
Dengan memahami kapan dan cara menggunakan rekursi, Anda dapat menulis kode C++ yang lebih bersih dan lebih mudah dipelihara sambil menghindari kesalahan umum.