Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsi ini akan terus berjalan sampai kondisi berhenti terpenuhi, oleh karena itu dalam sebuah fungsi rekursif perlu terdapat 2 blok penting, yaitu blok yang menjadi titik berhenti dari sebuah proses rekursi dan blok yang memanggil dirinya sendiri.
Contoh program rekursif:
1. Rekursif pembalik kata
#include<stdio.h>
#define MAX 100
void rekursif_angka_terbalik(int);
main()
{
int i,j,jml=0;
char bil[MAX];
printf("\n=======================");
printf("\n=NAMA : MAHFUZ =");
printf("\n=NIM : 100533405403=");
printf("\n=KELAS : PTI '10 B =");
printf("\n=======================");
printf("\n");
printf("\n^_^Program Pembalik Angka^_^");
printf("\n");
printf("\nMasukkan bilangan yang akan dibalik kawan= ");
gets(bil);
for (i=0;bil[i];i++)
jml=jml++;
printf("\n");
printf("Maka hasilnya adalah= ");
for(j=jml-1;j>=0;j--)
printf("%c",bil[j]);
printf("\n");
}
2. Rekursif rumus bangun ruang
Contoh program rekursif:
1. Rekursif pembalik kata
#include<stdio.h>
#define MAX 100
void rekursif_angka_terbalik(int);
main()
{
int i,j,jml=0;
char bil[MAX];
printf("\n=======================");
printf("\n=NAMA : MAHFUZ =");
printf("\n=NIM : 100533405403=");
printf("\n=KELAS : PTI '10 B =");
printf("\n=======================");
printf("\n");
printf("\n^_^Program Pembalik Angka^_^");
printf("\n");
printf("\nMasukkan bilangan yang akan dibalik kawan= ");
gets(bil);
for (i=0;bil[i];i++)
jml=jml++;
printf("\n");
printf("Maka hasilnya adalah= ");
for(j=jml-1;j>=0;j--)
printf("%c",bil[j]);
printf("\n");
}
2. Rekursif rumus bangun ruang
#include <iostream.h>
#include <conio.h>
void main()
{
int pilihan;
float Lsegitiga,Ksegitiga,Lpersegi,Kpersegi,Lpersegipanjang,Kpersegipanjang,Llingkaran,Klingkaran,Vkubus,LPkubus,Vbalok,LPbalok,Vbola,LPbola,Vlimassegiempat,LPlimassegiempat,Vtabung,LPtabung ;
float a, t, s, p, l, r, phi,sAB,sBC,sCA;
char ulang;
do
{
cout<<"(c) Created 2009 by dsuryanta.Inc"<<endl<<endl;
cout<<"Menu Utama"<<endl;
cout<<"1. Menghitung Luas & Keliling Segitiga"<<endl;
cout<<"2. Menghitung Luas & Keliling Bujursangkar"<<endl;
cout<<"3. Menghitung Luas & Keliling Persegipanjang"<<endl;
cout<<"4. Menghitung Luas & Keliling Lingkaran"<<endl;
cout<<"5. Menghitung Volum & Luas Permukaan Kubus"<<endl;
cout<<"6. Menghitung Volum & Luas Permukaan Balok"<<endl;
cout<<"7. Menghitung Volum & Luas Permukaan Bola"<<endl;
cout<<"8. Menghitung Volum & Luas Permukaan Limas Segi Empat"<<endl;
cout<<"9. Menghitung Volum & Luas Permukaan Tabung"<<endl;
cout<<"10. Exit"<<endl;
cout<<endl<<endl;
cout<<"Pilihan anda : ";cin>>pilihan;
switch (pilihan)
{
case 1 :
cout<<"Menghitung Luas Segitiga"<<endl;
cout<<"Menghitung Keliling Segitiga"<<endl;
cout<<"Masukkan alas segitiga : ";cin>>a;
cout<<"Masukkan tinggi segitiga : ";cin>>t;
cout<<"Masukkan sisi AB segitiga : ";cin>>sAB;
cout<<"Masukkan sisi BC segitiga : ";cin>>sBC;
cout<<"Masukkan sisi CA segitiga : ";cin>>sCA;
Lsegitiga = 0.5*a*t;
Ksegitiga = sAB+sBC+sCA;
cout<<"Luas segitiga adalah : "<<Lsegitiga<<endl;
cout<<"Keliling segitiga adalah : "<<Ksegitiga<<endl;
break;
case 2 :
cout<<"Menghitung Luas Bujursangkar"<<endl;
cout<<"Menghitung Keliling Bujursangkar"<<endl;
cout<<"Masukkan sisi persegi : ";cin>>s;
Lpersegi = s*s;
Kpersegi = 4*s;
cout<<"Luas bujursangkar : "<<Lpersegi<<endl;
cout<<"Keliling bujursangkar : "<<Kpersegi<<endl;
break;
case 3 :
cout<<"Menghitung Luas Persegipanjang"<<endl;
cout<<"Menghitung Keliling Persegipanjang"<<endl;
cout<<"Masukkan panjang : ";cin>>p;
cout<<"Masukkan lebar : ";cin>>l;
Lpersegipanjang = p*l;
Kpersegipanjang = (p+l)*2;
cout<<"Luas Persegipnjng: "<<Lpersegipanjang<<endl;
cout<<"Keliling Persegipnjng: "<<Kpersegipanjang<<endl;
break;
case 4 :
cout<<"Menghitung Luas Lingkaran"<<endl;
cout<<"Menghitung Keliling Lingkaran"<<endl;
cout<<"Masukkan jari-jari lingkaran : ";cin>>r;
phi = 3.14;
Llingkaran = phi*r*r;
Klingkaran = phi*(r+r);
cout<<"Luas lingkaran adalah : "<<Llingkaran<<endl;
cout<<"Keliling lingkaran adalah : "<<Klingkaran<<endl;
break;
case 5 :
cout<<"Menghitung Volum Kubus"<<endl;
cout<<"Menghitung Luas Permukaan Kubus"<<endl;
cout<<"Masukkan sisi kubus : ";cin>>s;
Vkubus = s*s*s;
LPkubus = 6*s;
cout<<"Volum kubus adalah : "<<Vkubus<<endl;
cout<<"Luas permukaan kubus adalah : "<<LPkubus<<endl;
break;
case 6 :
cout<<"Menghitung Volum Balok"<<endl;
cout<<"Menghitung Luas Permukaan Balok"<<endl;
cout<<"Masukkan panjang balok : ";cin>>p;
cout<<"Masukkan lebar balok : ";cin>>l;
cout<<"Masukkan tinggi balok : ";cin>>t;
Vbalok = p*l*t;
LPbalok = (2*p*l)+(2*p*t)+(2*l*t);
cout<<"Volum balok adalah : "<<Vbalok<<endl;
cout<<"Luas permukaan balok adalah : "<<LPbalok<<endl;
break;
case 7 :
cout<<"Menghitung Volum Bola"<<endl;
cout<<"Menghitung Luas Permukaan Bola"<<endl;
cout<<"Masukkan jari jari bola : ";cin>>r;
cout<<"Masukkan tinggi bola : ";cin>>t;
phi = 3.14;
Vbola = 4/3*phi*r*t*t*t;
LPbola = 4*phi*r*r;
cout<<"Volum bola adalah : "<<Vbola<<endl;
cout<<"Luas permukaan bola adalah : "<<LPbola<<endl;
break;
case 8 :
cout<<"Menghitung Volum Limas Segi Empat"<<endl;
cout<<"Menghitung Luas Permukaan Limas Segi Empat"<<endl;
cout<<"Masukkan panjang limas segi empat : ";cin>>p;
cout<<"Masukkan lebar limas segi empat : ";cin>>l;
cout<<"Masukkan tinggi limas segi empat : ";cin>>t;
Vlimassegiempat = (p*l*t)*1/3;
LPlimassegiempat = ((p+l)*t)+(p*l);
cout<<"Volum limas segi empat adalah : "<<Vlimassegiempat<<endl;
cout<<"Luas permukaan limas segi empat adalah : "<<LPlimassegiempat<<endl;
break;
case 9 :
cout<<"Menghitung Volum Tabung"<<endl;
cout<<"Menghitung Luas Permukaan Tabung"<<endl;
cout<<"Masukkan jari jari tabung : ";cin>>r;
cout<<"Masukkan tinggi tabung : ";cin>>t;
phi = 3.14;
Vtabung = phi*r*r*t;
LPtabung = (2*phi*r)*(r*t);
cout<<"Volum tabung adalah : "<<Vtabung<<endl;
cout<<"Luas permukaan tabung adalah : "<<LPtabung<<endl;
break;
case 10 :
cout<<"Exitâ?¦"<<endl;
break;
default:
cout<<"Menu tidak tersediaâ?¦"<<endl;
break;
}
cout<<"Kembali ke Menu Utama (y/n)?";cin>>ulang;
}while(ulang == 'y');
}
#include <conio.h>
void main()
{
int pilihan;
float Lsegitiga,Ksegitiga,Lpersegi,Kpersegi,Lpersegipanjang,Kpersegipanjang,Llingkaran,Klingkaran,Vkubus,LPkubus,Vbalok,LPbalok,Vbola,LPbola,Vlimassegiempat,LPlimassegiempat,Vtabung,LPtabung ;
float a, t, s, p, l, r, phi,sAB,sBC,sCA;
char ulang;
do
{
cout<<"(c) Created 2009 by dsuryanta.Inc"<<endl<<endl;
cout<<"Menu Utama"<<endl;
cout<<"1. Menghitung Luas & Keliling Segitiga"<<endl;
cout<<"2. Menghitung Luas & Keliling Bujursangkar"<<endl;
cout<<"3. Menghitung Luas & Keliling Persegipanjang"<<endl;
cout<<"4. Menghitung Luas & Keliling Lingkaran"<<endl;
cout<<"5. Menghitung Volum & Luas Permukaan Kubus"<<endl;
cout<<"6. Menghitung Volum & Luas Permukaan Balok"<<endl;
cout<<"7. Menghitung Volum & Luas Permukaan Bola"<<endl;
cout<<"8. Menghitung Volum & Luas Permukaan Limas Segi Empat"<<endl;
cout<<"9. Menghitung Volum & Luas Permukaan Tabung"<<endl;
cout<<"10. Exit"<<endl;
cout<<endl<<endl;
cout<<"Pilihan anda : ";cin>>pilihan;
switch (pilihan)
{
case 1 :
cout<<"Menghitung Luas Segitiga"<<endl;
cout<<"Menghitung Keliling Segitiga"<<endl;
cout<<"Masukkan alas segitiga : ";cin>>a;
cout<<"Masukkan tinggi segitiga : ";cin>>t;
cout<<"Masukkan sisi AB segitiga : ";cin>>sAB;
cout<<"Masukkan sisi BC segitiga : ";cin>>sBC;
cout<<"Masukkan sisi CA segitiga : ";cin>>sCA;
Lsegitiga = 0.5*a*t;
Ksegitiga = sAB+sBC+sCA;
cout<<"Luas segitiga adalah : "<<Lsegitiga<<endl;
cout<<"Keliling segitiga adalah : "<<Ksegitiga<<endl;
break;
case 2 :
cout<<"Menghitung Luas Bujursangkar"<<endl;
cout<<"Menghitung Keliling Bujursangkar"<<endl;
cout<<"Masukkan sisi persegi : ";cin>>s;
Lpersegi = s*s;
Kpersegi = 4*s;
cout<<"Luas bujursangkar : "<<Lpersegi<<endl;
cout<<"Keliling bujursangkar : "<<Kpersegi<<endl;
break;
case 3 :
cout<<"Menghitung Luas Persegipanjang"<<endl;
cout<<"Menghitung Keliling Persegipanjang"<<endl;
cout<<"Masukkan panjang : ";cin>>p;
cout<<"Masukkan lebar : ";cin>>l;
Lpersegipanjang = p*l;
Kpersegipanjang = (p+l)*2;
cout<<"Luas Persegipnjng: "<<Lpersegipanjang<<endl;
cout<<"Keliling Persegipnjng: "<<Kpersegipanjang<<endl;
break;
case 4 :
cout<<"Menghitung Luas Lingkaran"<<endl;
cout<<"Menghitung Keliling Lingkaran"<<endl;
cout<<"Masukkan jari-jari lingkaran : ";cin>>r;
phi = 3.14;
Llingkaran = phi*r*r;
Klingkaran = phi*(r+r);
cout<<"Luas lingkaran adalah : "<<Llingkaran<<endl;
cout<<"Keliling lingkaran adalah : "<<Klingkaran<<endl;
break;
case 5 :
cout<<"Menghitung Volum Kubus"<<endl;
cout<<"Menghitung Luas Permukaan Kubus"<<endl;
cout<<"Masukkan sisi kubus : ";cin>>s;
Vkubus = s*s*s;
LPkubus = 6*s;
cout<<"Volum kubus adalah : "<<Vkubus<<endl;
cout<<"Luas permukaan kubus adalah : "<<LPkubus<<endl;
break;
case 6 :
cout<<"Menghitung Volum Balok"<<endl;
cout<<"Menghitung Luas Permukaan Balok"<<endl;
cout<<"Masukkan panjang balok : ";cin>>p;
cout<<"Masukkan lebar balok : ";cin>>l;
cout<<"Masukkan tinggi balok : ";cin>>t;
Vbalok = p*l*t;
LPbalok = (2*p*l)+(2*p*t)+(2*l*t);
cout<<"Volum balok adalah : "<<Vbalok<<endl;
cout<<"Luas permukaan balok adalah : "<<LPbalok<<endl;
break;
case 7 :
cout<<"Menghitung Volum Bola"<<endl;
cout<<"Menghitung Luas Permukaan Bola"<<endl;
cout<<"Masukkan jari jari bola : ";cin>>r;
cout<<"Masukkan tinggi bola : ";cin>>t;
phi = 3.14;
Vbola = 4/3*phi*r*t*t*t;
LPbola = 4*phi*r*r;
cout<<"Volum bola adalah : "<<Vbola<<endl;
cout<<"Luas permukaan bola adalah : "<<LPbola<<endl;
break;
case 8 :
cout<<"Menghitung Volum Limas Segi Empat"<<endl;
cout<<"Menghitung Luas Permukaan Limas Segi Empat"<<endl;
cout<<"Masukkan panjang limas segi empat : ";cin>>p;
cout<<"Masukkan lebar limas segi empat : ";cin>>l;
cout<<"Masukkan tinggi limas segi empat : ";cin>>t;
Vlimassegiempat = (p*l*t)*1/3;
LPlimassegiempat = ((p+l)*t)+(p*l);
cout<<"Volum limas segi empat adalah : "<<Vlimassegiempat<<endl;
cout<<"Luas permukaan limas segi empat adalah : "<<LPlimassegiempat<<endl;
break;
case 9 :
cout<<"Menghitung Volum Tabung"<<endl;
cout<<"Menghitung Luas Permukaan Tabung"<<endl;
cout<<"Masukkan jari jari tabung : ";cin>>r;
cout<<"Masukkan tinggi tabung : ";cin>>t;
phi = 3.14;
Vtabung = phi*r*r*t;
LPtabung = (2*phi*r)*(r*t);
cout<<"Volum tabung adalah : "<<Vtabung<<endl;
cout<<"Luas permukaan tabung adalah : "<<LPtabung<<endl;
break;
case 10 :
cout<<"Exitâ?¦"<<endl;
break;
default:
cout<<"Menu tidak tersediaâ?¦"<<endl;
break;
}
cout<<"Kembali ke Menu Utama (y/n)?";cin>>ulang;
}while(ulang == 'y');
}
3. Rekursif segitiga siku-siku terbalik
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
void rekursif(int argc, char *argv[])
{
int t,y,x;
cout << "Masukkan tinggi segitiga : ";
cin >> t;
cout << "----------------------------\n";
for(y=1;y<=t;y++)
{
cout<<" ";
for(x=1;x<=y;x++)
{
cout << "*";
}
cout << " " << endl;
}
cout<<endl<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
#include <conio.h>
#include <stdio.h>
using namespace std;
void rekursif(int argc, char *argv[])
{
int t,y,x;
cout << "Masukkan tinggi segitiga : ";
cin >> t;
cout << "----------------------------\n";
for(y=1;y<=t;y++)
{
cout<<" ";
for(x=1;x<=y;x++)
{
cout << "*";
}
cout << " " << endl;
}
cout<<endl<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
4. Rekursif menetukan nilai segitiga
#include <stdio.h>
#include <conio.h>
int main(){
int i,j,
sudut[3];
for (i=0;i<3;i++){
printf("Sudut ke - %d : ",i+1);
scanf("%d",&sudut[i]);
}
int sum;
bool samaKaki = false;
for (i=0;i<3;i++){
sum = 0;
for (j=0;j<3;j++){
if (j != i) {
sum += sudut[j];
}
}
if (sudut[i] == sum){
printf("Segitiga Sama Kaki");
samaKaki = true;
}
}
if (! samaKaki){
printf("Bukan segitiga sama kaki");
}
getch();
return 0;
}
#include <conio.h>
int main(){
int i,j,
sudut[3];
for (i=0;i<3;i++){
printf("Sudut ke - %d : ",i+1);
scanf("%d",&sudut[i]);
}
int sum;
bool samaKaki = false;
for (i=0;i<3;i++){
sum = 0;
for (j=0;j<3;j++){
if (j != i) {
sum += sudut[j];
}
}
if (sudut[i] == sum){
printf("Segitiga Sama Kaki");
samaKaki = true;
}
}
if (! samaKaki){
printf("Bukan segitiga sama kaki");
}
getch();
return 0;
}
Semoga bermanfaat!!
0 komentar:
Posting Komentar