Menguasai Rekursi dalam C: Praktik Terbaik & Kondisi Keluar
Rekursi adalah proses mengulangi item dengan cara yang serupa dengan dirinya sendiri. Dalam bahasa pemrograman, jika program memungkinkan Anda untuk memanggil fungsi di dalam fungsi yang sama, maka disebut sebagai pemanggilan rekursif dari fungsi tersebut.
void recursion() { recursion(); /* fungsi memanggil dirinya sendiri */ } int main() { recursion(); } Bahasa pemrograman C mendukung rekursi, yaitu fungsi untuk memanggil dirinya sendiri. Tetapi saat menggunakan rekursi, programmer perlu berhati-hati untuk menentukan kondisi keluar dari fungsi, sebaliknya akan terjadi loop tak terbatas.
Fungsi rekursif sangat berguna untuk memecahkan banyak masalah matematika, seperti menghitung faktorial dari suatu bilangan, menghasilkan deret Fibonacci, dll.
Faktorial Bilangan
Contoh berikut menghitung faktorial dari bilangan yang diberikan menggunakan fungsi rekursif −
Live Demo
#include <stdio.h> unsigned long long int factorial(unsigned int i) { if(i <= 1) { return 1; } return i * factorial(i - 1); } int main() { int i = 12; printf("Faktorial dari %d adalah %d\n", i, factorial(i)); return 0; } Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah sebagai berikut −
Faktorial dari 12 adalah 479001600
Deret Fibonacci
Contoh berikut menghasilkan deret Fibonacci untuk bilangan yang diberikan menggunakan fungsi rekursif −
Live Demo
#include <stdio.h> int fibonacci(int i) { if(i == 0) { return 0; } if(i == 1) { return 1; } return fibonacci(i-1) + fibonacci(i-2); } int main() { int i; for (i = 0; i < 10; i++) { printf("%d\t\n", fibonacci(i)); } return 0; } Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah sebagai berikut −
0 1 1 2 3 5 8 13 21 34