Sabtu, 27 November 2010

REKURSI di C


Rekursi adalah  adalah subrutin yang memanggil dirinya sendiri, baik secara langsung maupun tidak langsung. Bentuk rekursi merupakan alternatif iterasi atau perulangan. Ada beberapa masalah yang sesuai dipecahkan menggunakan teknik rekursi.
Secara umum teknik rekursi biasanya kurang efisien dibandingkan teknik iterasi karena:
  • Rekursi memanggil dirinya sendiri sehingga menyebabkan waktu pemrosesan lebih lama dibanding iterasi biasa.
  • Proses rekursi menggunakan memori stack.
  • Semakin lama proses rekursi dikerjakan, maka memori stack akan terus berkurang dan akibatnya memori  stack akan habis. 
Dalam rekursi sebenarnya terkandung penegrtian fungsi, perbedaanya adalah rekursi bisa memanggil dirinya sendiri, sedangkan fungsi harus dipanggil lewat pemanggilan fungsi. Suatu fungsi tidak hanya bisa memanggil fungsi lain, melainkan juga bisa memanggil dirinya sendiri.
Pemanggilan dirinya sendiri bisa berarti proses berulang yang tidak bisa diketahui kapan berakhir sehingga dalam rekursi harus ada syarat-syarat berikut:
  • Ada titik pemberhentian sebagai pengendali rekursi
  • Adanya langkah induksi yang menuju pada titik pemberhentian.

CONTOH PROGRAM:


#include <stdio.h>
int fact();
main(){
int n, m;
printf(“Masukkan angka: ”);
scanf(“%d”, &n);
m = fact(n);
printf(“Nilai faktorial %d adalah %d. \n”, n, m);
}
int fact(x)
int x;
{
if (x==0) return (1);
else return (x * fact(x-1));
}

Tidak ada komentar:

Posting Komentar