Wednesday, November 7, 2012

Mutual recursion dengan Bahasa C

Rekursi adalah fungsi yang memanggil dirinya sendiri agar dapat memecahkan solusi. solusi dipecahkan dengan memanggil fungsi yang sederhana dari fungsi tersebut.
Untuk solusi pada program ini adalah dengan saling memanggil antara fungsi ganjil dan genap. dimana fungsi yang terakhir dikurangi dan mencapai nilai 0 maka akan mereturn nilai tertentu.

berikut videonya.


ini adalah source code nya.



//mutual recursion
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void)
{
       int k, BS;
       int genap(int n);
       int ganjil(int m);

       printf("Masukan sembarang bilangan bulat>"); scanf("%d",&k);
       if (k==0)
              printf("\nNol bukan bilangan genap dan bukan bilangan ganjil.\n");
       else
       {
              BS = genap(k);
              if (BS==1)
                     printf("\nBilangan %d adalah bilangan genap.\n",k);
              else if (BS==0)
                     printf("\nBilangan %d adalah bilangan ganjil.\n",k);
       }
       system("pause");
       return 0;
}

int genap(int n)
{
       if (n==0)
              return 1;
       else
              return ganjil(abs(n)-1);
}

int ganjil(int m)
{
       if (m==0)
              return 0;
       else
              return genap(abs(m)-1);
}

 

sedikit penjelasan dari coding diatas.



int k, BS;
è  Merupakan deklarasi k yaitu nilai bilangan bulat yang dimasukkan.

int genap(int n);
int ganjil(int m);
è  Keduanya merupakan deklarasi dari fungsi genap(n) dan ganjil(m)

printf("Masukan sembarang bilangan bulat>"); scanf("%d",&k);
è  Perintah untuk memasukkan nilai bilangan bulat yang bernilai k

if (k==0)
       printf("\nNol bukan bilangan genap dan bukan bilangan ganjil.\n");
è  Statement jika user memasukkan nilai 0.

else
{
       BS = genap(k);
       if (BS==1)
              printf("\nBilangan %d adalah bilangan genap.\n",k);
       else if (BS==0)
              printf("\nBilangan %d adalah bilangan ganjil.\n",k);
}
è  Jika BS yang dieksekusi pada fungsi genap jika nilai yang di return = 0 maka ganjil dan jika 1 maka genap.

int genap(int n)
{
       if (n==0)
              return 1;
       else
              return ganjil(abs(n)-1);
}

int ganjil(int m)
{
       if (m==0)
              return 0;
       else
              return genap(abs(m)-1);
}

è  Funsi diatas memanggil salah satu fungsi dari library math.h. abs() mereturn nilai absolut dari sebuah integer.
è  Kedua fungsi ini saling memanggil jadi jika nilai masing2 bukan 0 maka fungsi saling memanggil.
è  Fungsi akan dieksekusi terus menerus, sehingga bilangan fungsi terakhir yang mencapai nilai nol. Maka itu adalah nilai yang direturn. Jadi jika pengurangan 1 terus menerus mencapai angka 0 tepat di genap maka akan diprin genap, dan juga sebaliknya.

No comments:

Post a Comment