Program Rekursif C++

Posted by mahfuz On Jumat, 01 April 2011 0 komentar
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

#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');
}


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;
}


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;
}

Semoga bermanfaat!!

0 komentar:

Posting Komentar