Rabu, 26 Oktober 2011

FUNGSI REKURSIF DUA PARAMETER : PERKALIAN DUA BUAH INTEGER

Definisi interatif untuk kasus perkalian dua buah integer adalah sebagai berikut :

Definisi : (iteratif)
a x b =
1. a + a +...+ a (b kali), untuk b > 0
2. (-a) + (-a) +...+ (-a) (b kali), untuk b < 0

Dalam definisi diatas dapat dilihat bahwa perulangan selalu dipertahankan bernilai positif, terutama untuk kasus b yang negatif, yaitu dengan cara mengalihkan nilai negatif ke a. Implementasi definisi tersebut menggunakan fungsi sebagai berikut :

#include <iostream.h>
#include <math.h>


int kali_interatif(int a, int b)
{
int i, hasil = 0; //nilai awal
for (i = 1; i <= abs(b); i++)
hasil = hasil + a;
if (b < 0) return - hasil;
else return hasil;
}


void main()
{
cout << "3x(-5) = " << kali_iteratif(3, -5) << endl;
}

Fungsi absolut (abs) digunakan untuk perulangan yang selalu positif (7). Fungsi abs prototip fungsinya berada pada math.h (2). Sementara bila b bernilai negatif dari perhitungan semula untuk b positif (9). Dalam implementasi menggunakan fungsi rekursif, nilai awal pada kasus iteratif digunakan sebagai kasus basis (penyetop). Sementara dua kasus yang ada pada definisi interatif digunakan dan dimodifikasi untuk kasus rekursif. Definisi rekursif dari kasus perkalian dua integer adalah sebagai berikut:

Definisi : (rekursif)
a x b =
1. 0, untuk b = 0
2. a + (a x (b-1)), untuk b > 0
3. -a + (a x (b + 1)), untuk b < 0

Implementasi deari rekursif diatas adalah sebagai berikut :

#include <iostream.h>


int kali_rekursif(int a, int b)
{
if (b==0)
return 0;
else if (b > 0)
return a + kali_rekursif(a, b - 1);
else 
return (-a) + kali_rekursif(a, b+1);
}


void main()
{
cout << " 3 x(-5) = " << kali_rekursif(3, -5) << endl;
}

0 komentar:

Posting Komentar

My Visitor

free counters
 
Candra Personal Blog powered by blogger.com
Design by Free7 Blogger Templates Simple Clean