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