Rabu

c++ rekursif dan iteratif

fungsi rekursif yang mempunyai design dan konsep yang sangat elegan, akan tetapi iterasi lebih simple daripada proses rekursi dengan melakukan pengulangan sederhana terhadap blok kode dengan variabel lokal yang mengontrol jumlah eksekusi. Didalam C terdapat konstruksi for, while, and do untuk kontrol iterasi loop. Dibawah ini diberikan perbandingan antara fungsi rekursif yang sudah ada diatas dengan bentuk kontrol iterasi.

Iteratif adalah proses perulangan dalam suatu prosedur atau fungsi.

Algoritma iteratif

-Teknik Iteratif merupakan suatu teknik pembuatan algoritma dengan pemanggilan procedure beberapa kali atau hingga suatu kondisi tertentu terpenuhi.

-Tidak ada variabel lokal baru

-Program tidak sederhana

Contoh:

BARISAN BILANGAN FIBBONACI → 1, 1, 2, 3, 5, 8, 13, 21, . . .

Teknik Iteratif pada algoritma untuk menentukan suku ke-n dari barisan bilangan Fibbonaci, adalah sebagai berikut :

1. Set x, y, n, i, f : integer

2. x ← 1 ; y ← 1

3. If n ⟩ 2 then

begin

4. for i ← 3 to n do

begin

5. F ← x + y

6. x ← y

7. y ← F

end

else

8. F ← x

9. Write(F)

End

Algoritma rekursif

-Teknik Rekursif merupakan salah satu cara pembuatan algoritma dengan pemanggilan procedure atau function yang sama

-Ada variabel lokal baru

-Program menjadi lebih sederhana

Contoh:

BARISAN BILANGAN FIBBONACI → 1, 1, 2, 3, 5, 8, 13, 21, . . .

Teknik Rekursif pada algoritma untuk menentukan suku ke-n dari barisan bilangan Fibbonaci, adalah sebagai berikut :

Procedure F(n : integer) : integer

1. If n ≤ 2 then F(n) = 1

else F(n) = F(n-1) + F(n-2)

Endif

End

#include

#include

int Perkalian(int bilangan1, int bilangan2)

{

int pro=0;

for (int i=bilangan2;i>=1;i–)

{

pro+=bilangan1;

}

return (pro);

}

int main(void)

{

int x,y,N;

scanf(“%d %d”,&x,&y);

N = Perkalian(x,y);

printf(“Hasil : %d”,N);

getch();

return (0);

}

Rekursif merupakan sebuah proses yang terjadi apabila dalam sebuah fungsi terdapat sebuah instruksi yang memanggil (calling) fungsi itu sendiri.

Contoh program:

#include

void hitung(int n);

main()

{

int N, fact;

scanf(“%i”, &N);

fact= hitung(N);

printf(“%i”, fact);

}

void hitung()

{

int x,y;

if(n==0);

return(1);

x=n-1;

y=hitung(x);

return(n*y);

}


Perbedaan dan Persamaan Rekursif dan Iteratif :

a. Persamaan

Sama-sama merupakan bentuk perulangan.

Dilakukan pengecekan kondisi terlebih dahulu sebelum mengulang.

b. Perbedaan

1) Iteratif menggunakan FOR, WHILE, DO-WHILE sedangkan rekursif hanya menggunakan IF.

Kelebihan metode rekursif:

Solusi sangatlah efisien.

Dapat memecahkan masalah yang sulit dengan tahapan yang mudah dan singkat.

Kekurangan metode rekursif:

Sulit dipahami.

Perlu stack besar (stack overflow).

Tidak ada komentar:

Posting Komentar