Program Rekursif C++
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
#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
#include
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"<>pilihan;
switch (pilihan)
{
case 1 :
cout<<"Menghitung Luas Segitiga"<>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 : "<>s;
Lpersegi = s*s;
Kpersegi = 4*s;
cout<<"Luas bujursangkar : "<>p;
cout<<"Masukkan lebar : ";cin>>l;
Lpersegipanjang = p*l;
Kpersegipanjang = (p+l)*2;
cout<<"Luas Persegipnjng: "<>r;
phi = 3.14;
Llingkaran = phi*r*r;
Klingkaran = phi*(r+r);
cout<<"Luas lingkaran adalah : "<>s;
Vkubus = s*s*s;
LPkubus = 6*s;
cout<<"Volum kubus adalah : "<>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 : "<>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 : "<>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 : "<>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 : "<>ulang;
}while(ulang == 'y');
}
3. Rekursif segitiga siku-siku terbalik
#include
#include
#include
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<
#include
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;
}