0% menganggap dokumen ini bermanfaat (0 suara)
9 tayangan10 halaman

Teknik Rekursif dalam Pemrograman

praktikum struktur data 9

Diunggah oleh

rumiyatisholihah78
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
9 tayangan10 halaman

Teknik Rekursif dalam Pemrograman

praktikum struktur data 9

Diunggah oleh

rumiyatisholihah78
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

BAB IX

RECURSIVE

9.1 Ringkasan Materi


Recursive (rekursif) adalah teknik pemecahan masalah yang powerful dan
dapat digunakan ketika inti dari masalah terjadi berulang kali. Tentu saja, tipe dari
masalah ini dapat dipecahkan mengunakan perkataan berulang-ulang (i.e.,
menggunakan konstruksi looping seperti for, while dan do-while).Sesungguhnya,
iterasi atau perkataan berulang-ulang merupakan peralatan yang lebih efisien jika
dibandingkan dengan recursif tetapi recursion menyediakan solusi yang lebih baik
untuk suatu masalah. Pada rekursif, method dapat memanggil dirinya sendiri.
Data yang berada dalam method tersebut seperti argument disimpan sementara
kedalam stack sampai method pemanggilnya diselesaikan.

Algoritma Recursive adalah fungsi yang tepat yang dapat di gunakan untuk
memecahkan suatu masalah yang logis.

Kelemahan dan kelebihan fungsi recursive :


1. Kelemahan
a. Memakan memori yang lebih besar, karena setiap kali bagian dirinya
dipanggil, dibutuhkan sejumlah ruang memori tambahan.
b. Mengorbankan efisiensi dan kecepatan
c. Problem: rekursi seringkali tidak bisa “berhenti” sehingga memori akan
terpakai habis dan program bisa hang.
d. Program menjadi sulit dibaca.

2. Kelebihan
Karena program lebih singkat dan ada beberapa kasus yang lebih mudah
menggunakan fungsi yang rekursif.

65
9.2 Menampilkan Rekursif rumus bangun ruang
Langkah percobaan:
1. Mendeklarasikan file header.
2. Membuat logika rumus-rumus bangun ruang.

Source code program:


#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
void main()
{
int pilihan;
float
R009,U009,M009,I009,Y009,A009,T009,IS009,H009,O009,L009,I
H009,AH009,RU009,MI009,YA009,TI009,SH009 ;
float a, t, s, p, l, r, phi,OL009,IHA009,HR009;
char ulang;
do
{
cout<<"Rumiyati Sholihah -- 2012D --
1412120009"<<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;

66
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>>OL009;
cout<<"Masukkan sisi BC segitiga : ";cin>>IHA009;
cout<<"Masukkan sisi CA segitiga : ";cin>>HR009;
R009 = 0.5*a*t;
U009 = OL009+IHA009+HR009;
cout<<"Luas segitiga adalah : "<<R009<<endl;
cout<<"Keliling segitiga adalah : "<<U009<<endl;
break;
case 2 :
cout<<"Menghitung Luas Bujursangkar"<<endl;
cout<<"Menghitung Keliling Bujursangkar"<<endl;
cout<<"Masukkan sisi persegi : ";cin>>s;
M009 = s*s;
I009 = 4*s;
cout<<"Luas bujursangkar : "<<M009<<endl;
cout<<"Keliling bujursangkar : "<<I009<<endl;
break;
case 3 :
cout<<"Menghitung Luas Persegipanjang"<<endl;
cout<<"Menghitung Keliling Persegipanjang"<<endl;
cout<<"Masukkan panjang : ";cin>>p;
cout<<"Masukkan lebar : ";cin>>l;
Y009 = p*l;
A009 = (p+l)*2;
cout<<"Luas Persegipnjng: "<<Y009<<endl;
cout<<"Keliling Persegipnjng: "<<A009<<endl;
break;

67
case 4 :
cout<<"Menghitung Luas Lingkaran"<<endl;
cout<<"Menghitung Keliling Lingkaran"<<endl;
cout<<"Masukkan jari-jari lingkaran : ";cin>>r;
phi = 3.14;
T009 = phi*r*r;
IS009 = phi*(r+r);
cout<<"Luas lingkaran adalah : "<<T009<<endl;
cout<<"Keliling lingkaran adalah : "<<IS009<<endl;
break;
case 5 :
cout<<"Menghitung Volum Kubus"<<endl;
cout<<"Menghitung Luas Permukaan Kubus"<<endl;
cout<<"Masukkan sisi kubus : ";cin>>s;
H009 = s*s*s;
O009 = 6*s;
cout<<"Volum kubus adalah : "<<H009<<endl;
cout<<"Luas permukaan kubus adalah : "<<O009<<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;
L009 = p*l*t;
IH009 = (2*p*l)+(2*p*t)+(2*l*t);
cout<<"Volum balok adalah : "<<L009<<endl;
cout<<"Luas permukaan balok adalah : "<<IH009<<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;

68
AH009 = 4/3*phi*r*r*;
RU009 = 4/3*phi*r*r;
cout<<"Volum bola adalah : "<<AH009<<endl;
cout<<"Luas permukaan bola adalah : "<<RU009<<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;
MI009 = (p*l*t)*1/3;
YA009 = ((p+l)*t)+(p*l);
cout<<"Volum limas segi empat adalah : "<<MI009<<endl;
cout<<"Luas permukaan limas segi empat adalah :
"<<YA009<<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;
TI009 = phi*r*r*t;
SH009 = (2*phi*r)*(r*t);
cout<<"Volum tabung adalah : "<<TI009<<endl;
cout<<"Luas permukaan tabung adalah : "<<SH009<<endl;
break;
case 10 :
_exit(0);
break;
default:
cout<<"Menu tidak tersediaâ?¦"<<endl;
break;
}
cout<<"Kembali ke Menu Utama (y/n)?";cin>>ulang;

69
}while(ulang == 'y');
}
Hasil percobaan:

Gambar 9.1 Rekursiv Rumus Bangun Ruang

cout<<"Rumiyati Sholihah -- 2012D --


1412120009"<<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)

70
Gambar 9.2 Luas Dan Keliling Segitiga

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>>OL009;
cout<<"Masukkan sisi BC segitiga : ";cin>>IHA009;
cout<<"Masukkan sisi CA segitiga : ";cin>>HR009;
R009 = 0.5*a*t;
U009 = OL009+IHA009+HR009;
cout<<"Luas segitiga adalah : "<<R009<<endl;
cout<<"Keliling segitiga adalah : "<<U009<<endl;
break;

71
Gambar 9.3 Luas Dan Keliling Bujursangkar

case 2 :
cout<<"Menghitung Luas Bujursangkar"<<endl;
cout<<"Menghitung Keliling Bujursangkar"<<endl;
cout<<"Masukkan sisi persegi : ";cin>>s;
M009 = s*s;
I009 = 4*s;
cout<<"Luas bujursangkar : "<<M009<<endl;
cout<<"Keliling bujursangkar : "<<I009<<endl;
break;

Keterangan program:
Program yang digunakan untuk menghitung luas dan keliling pada suatu
bangun ruang.

9.3 Menampilkan Segitiga Pascal


Langkah percobaan:
1. Mendeklarasikan file header.
2. Membuat logika tingginya segitiga pascal.

72
Source code program:
#include <stdio.h>
main()
{
int R009,U009,M009,I009,Y009,A009;
int T009[100]={0,1};
int IS009[100];
int H009[100];
printf("#____________________________#\n");
printf("\tRumiyati Sholihah -- 2012D -- 1412120009\n");
printf("#____________________________#\n");
printf("Masukkan tinggi segitiga : ");
scanf("%d",&A009);
R009=0;
U009=1;
I009=A009;
Y009=I009;
while(U009<=A009)
{
while(I009>=1)
{
printf(" ");
I009--;
}
M009=0;
while(M009<=R009)
{
IS009[M009]=T009[M009]+T009[M009+1];
H009[M009+1]=IS009[M009];
printf("%d ",IS009[M009]);
M009++;
}
H009[0]=0;
H009[R009+2]=0;
M009=0;
while(M009<=R009+2)

73
{
T009[M009]=H009[M009];
M009++;
}
R009++;
U009++;
I009=Y009;
I009--;
Y009=I009;
printf("\n");
}
}
Hasil percobaan:

Gambar 9.4 Tampilan Segitiga Pascal


Keterangan program:
Program yang digunakan untuk mengetahui urutan nilai dalam segitiga
pascal.

74

Anda mungkin juga menyukai