Rekursif Dalam Pemrograman Bahasa C

19:52 Pemrograman Web 6 Comments

Hello! kali ini aku ingin berbagi tentang REKURSIF dalam bahasa pemrograman bahasa C!
Mungkin sebelumnya kita sudah tidak asing dengan perulangan menggunakan FOR atau WHILE. selain kedua hal itu, ternyata masih ada cara lain loh untuk perulangan . Itu dia Rekursif, sebelumnya apa itu rekursif?
Dalam makna yang sederhana rekursif adalah:
Rekursi adalah suatu proses di mana salah satu langkah dalam prosedur tersebut menjalankan prosedur itu sendiri. Prosedur yang melakukan rekursi disebut dengan ‘rekursif’
Dari pengertian diatas kita mendapat kata kunci “prosedur” sebelumnya mungkin beberapa dari kita sudah pernah belajar atau sekedar tau tentang prosedur dalam bahasa C. Jadi , untuk bahasan rekursif ini kita lebih baik mempelajari terlebih dahulu tentang prosedur dan fungsi .
Dibawah ini adalah contoh perulangan transformasi dari perulangan menggunakan FOR ke perulangan dengan teknik rekursif .
Kasus : tampilkan hasil perulangan angka 5 menjadi 54321 !
Perulangan menggunakan FOR :
int main(){
            int i;
            int batas;
            batas = 5;
            for(i=batas;i>0;i--){
                        printf("%d",i);
            }
return 0;
}
Perulangan menggunakan rekursif :
void ulangAngka(int batas){
            if(batas >0){
                        printf("%d",batas);
                        ulangAngka(batas - 1);
            }
}

int main(){
            ulangAngka(5);
return 0;
}
Keliatan kan perbedanya? pada prosedur perulangan itu di dalamnya memanggil prosedur itu sendiri, pemanggilan prosedur tersebut akan terus dilakukan sampai nilai batas = 0. Penggunaan IF diatas disebut basis (batas berhenti rekursif).
Dibawah ini akan kita coba pelemparan nilai dari sebuah fungsi menggunakan rekursif :
Kasus : tampilkan hasil dari faktorial 5!
Sebelumnya apa itu faktorial? Faktorial dalam matematia faktorial dari bilangan asli n adalah hasil perkalian antara bilangan bulat positif yang kurang dari atau sama dengan n. Faktorial ditulis sebagai n! dan disebut n faktorial. n!=(n-1) x (n-2) x (n-3) ...
#include <stdio.h>
int faktorial(int i){
            if(i==0 || i==1) return 1;
            return i*faktorial(i-1);
}
main(){
            printf("%d", faktorial(10));
}
Maka dari kode diatas akan menghasilkan 120 .
Kasus 2:
Bilangan prima
Bilangan prima adalah bilangan yang nilainya habis dibagi satu atau pun dibagi bilangan itu sendiri. Misalkan 5, lima hanya habis dibagai dengan bilangan 5 atau 1. berbeda dengan 8, yang habis dibagi 8, 4, 2, dan 1.
 Dibawah ini adalah kode fungsinya
int cekPrima(int p){
   if(p == 1){
      return 1;
   }else if(n%p==0){
      return 0;
   }else{
      return cekPrima(p-1);
   }
}
Sedangkan dibawah ini adalah kode lengap dalam bahasa c
#include
#include

int n;

int cekPrima(int p){
   if(p == 1){
      return 1;
   }else if(n%p==0){
      return 0;
   }else{
      return cekPrima(p-1);
   }
}

main(){
   printf("masukkan nilai :"); scanf("%d",&n);
   if(n>1){
      int p = cekPrima(n-1);
      if(p == 1){
         printf("%d bilangan PRIMA\n",n);
      }else{
         printf("%d bilangan BUKAN PRIMA\n",n);
      }
   }else{
      printf("%d bilangan BUKAN PRIMA\n",n);
   }
}

itu dia rekursif dasar dalam pemrograman bahasa C, teknik rekursif ini sangat berguna untuk beberapa kasus dikehidupan kita sehari-hari diantaranya adalah pengurutan menggunakan Quick Sort (di dalamnya terdapat teknik rekursif), penyelesaian kasus menggunakan Tree, dan algoritma yang mengacu pada Divide and Conquer.
Jika terjadi kendala, silahkan tulis pertanyaan dikolom komentar dibawah in. Atau bisa membaca beberapa diktat yang tersedia di perpustakaan-perpustakaan umum terdekat atau perpustakaan kampus. Atau bisa mengakses beberapa ebook yang tersedia di internet.
Semoga tulisan ini bermanfaat



Restiyana Dwi Astuti - 1154077 - Algoritma dan Struktur Data

6 komentar: