Perbedaan algoritma rekursif dan algoritma iterasi
Iterasi | Rekursi |
Perintah iterasi, merupakan proses perulangan yang loop based | Menggunakan fungsi rekursi, fungsi tersebut akan memanggil dirinya sendiri |
Menggunakan struktur perualangan (repetition structure) | Menggunakan struktur seleksi (selection structure) |
Pengalokasian memori relatif kecil | Pengalokasian memori relatif besar |
Nilai tak hingga akan membuat CPU cycle digunakan terus-menerus | Nilai tak hingga akan membuat sistem crash |
Kode umumnya lebih panjang daripada rekursi | Kode umumnya lebih pendek dari iterasi |
Rekursi akan terhenti apa bila sudah mencapai indeks dasar | Iterasi akan terhenti apa bila kondisi loop tidak terpenuhi |
Ini adalah perbedaan umum antara algoritma iterasi dan algoritma rekursif
Sekarang adalah persamaan antara algoritma iterasi dan algoritma rekursif
Persamaan antara keduanya adalah terletak di penggunaannya yaitu sama2 menggunakan bahasa pemrograman.
Contoh program Perpangkatan Rekursif dan Iterasi
#include <stdio.h> int pangkat_r(int x, int n){ if(n == 0) { return 1; }else{ return x * pangkat_r(x, n-1); } } int pangkat_i(int x, int n){ int temp =1; for(int i=1;i<=n;i++) { temp *=x; } return temp; } main () { int x,n; printf("Masukkan Nilai positif yang akan dipangkatkan : "); scanf("%d",&x); printf("Masukkan Banyaknya Pangkat : "); scanf("%d",&n); printf("\n\n\nHasil Perpangkatan Rekursif diatas adalah = %d", pangkat_r(x,n)); printf("\nHasil Perpangkatan Iteratif diatas adalah = %d", pangkat_i(x,n)); return 0; } |
Contoh program Faktorial Rekursif dan Iterasi
#include <stdio.h> int fak_r(int x){ if(x == 0) { return 1; }else{ return x * fak_r(x-1); } } int fak_i(int x){ int temp =1; for(int i=1;i<=x;i++) { temp *=i; } return temp; } main () { int x,n; printf("\t\t berikut adalah program mencari hasil faktorial\n"); printf("Masukkan Nilai positif : "); scanf("%d",&x); printf("\n\n\nHasil faktorial Rekursif diatas adalah = %d", fak_r(x)); printf("\nHasil faktorial Iteratif diatas adalah = %d", fak_i(x)); return 0; } |
No comments