7/21/2019 TUPEN - Modul 1 - Fungsi Rekursif
1/9
PRAKTIKUM ALGORITMA STRUKTUR DATA
TUGAS PENDAHULUAN
MODUL 1 FUNGSI REKURSIF
Sesi : D1
Nama Praktikan :
OKTYAAN ADITYA !1"#$"1"1%#&
ASISTEN :
Min Umami !"'#$"1"1((&
D)*+ Herr+ant, !"'#$"1"1("&
LA-ORATORIUM PEMROGRAMAN KOMPUTER
.URUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNI/ERSITAS PEM-ANGUNAN NASIONAL 0/ETERAN .AA TIMUR
2"11
LEM-AR PENGESAHAN
Telah diperiksa dan disetujui Tugas Pendahuluan :
Praktikum : Algoritma Struktur Data
Modul : 1
Judul : FUNGS !"#U!SF
7/21/2019 TUPEN - Modul 1 - Fungsi Rekursif
2/9
!om$ongan : D
Group : 1
Sura$a%a& Selasa '( Maret ')11
Men%etujui&
Asisten Penguji
!333333333333333333&
NPM:
TUGAS PENDAHULUAN ! TUPEN&
M,*)4 1 F)n5si Rek)rsi6
I7 Dasar Te,ri
Fungsi rekursi* adalah *ungsi %ang memanggil dirin%a sendiri+ Fungsi ini akan terus $erjalan
sampai kondisi $erhenti terpenuhi& oleh karena itu dalam se$uah *ungsi rekursi* perlu
terdapat ' $lok penting& %aitu $lok %ang menjadi titik $erhenti dari se$uah proses rekursi dan
$lok %ang memanggil dirin%a sendiri+
,ontoh - .ontoh penerapan rekursi* :
1+ Fungsi .etak ke la%ar
7/21/2019 TUPEN - Modul 1 - Fungsi Rekursif
3/9
Fungsi ini men.etak nilai dari paremeter %ang dilempar kepadan%a+ Jika nilai dari
parameter terse$ut / )& *ungsi akan men.etak nilai dari parameter terse$ut dan kemudian
memanggil dirin%a lagi& jika tidak& program $erhenti+
'+ Fungsi pangkat
Fungsi ini digunakan untuk menghitung nilai: 0n
dengan n $erupa $ilangan $ulat positi*+Solusi dari persoalan ini:
J#A n 1 MA#A 0n 0
S"2AN TU: 0n 0 3 0n41
Se$agai .ontoh diam$il nilai 05 dengan n6& pelukisan proses peme.ahann%a:
7erikut adalah *ungsi pangkat dengan menggunakan solusi di atas:
a adalah $ilangan %ang dipangkatkan& sedangkan $ adalah $ilangan pemangkatn%a+ Jikanilai dari $ adalah 1& return a& lainn%a return a dikali dengan *ungsi pangkat dengan
parameter a dan $41+ Untuk le$ih jelas& terapkan dalam program+
7/21/2019 TUPEN - Modul 1 - Fungsi Rekursif
4/9
6+ Fungsi *aktorial
Faktorial dapat di$uat dengan menerapkan rekursi*+ 7erikut ini adalah *ungsi *aktorial
rekursi* dari se$uah program+
Fungsi *aktorial diatas akan melakukan rekursi selama nilain%a / 1+ Se$agai .ontoh:
89& pelukisan pen%elesaiann%a:
II7 S,a4
1+ 7uatlah program untuk melakukan operasi perkalian antara $e$erapa $ilangan %ang
di*aktorialkan999
7/21/2019 TUPEN - Modul 1 - Fungsi Rekursif
5/9
III7 A45,ritma
1+ Mulai+
'+ Telah di inisialisasi $aha ; int *aktorial& ? ;int *aktorial : @
8+ 7ilangan dari nilai > %ang telah di inputkan akan di *aktorialkan+
5+ ,etak hasil *aktorial dari nilai >+
+ nputkan $ilangan untuk *aktorial dari nilai % : @
B+ 7ilangan dari nilai % %ang telah di inputkan akan di *aktorialkan+
C+ ,etak hasil *aktorial dari nilai %+
(+ Telah disimpan nilai *aktorial dari kedua nilai >& ? %+
1)+ Tekan "nter& untuk melanjutkan+
11+ Maka hasil $ilangan dari kedua nilai >& ? % akan dikalikan+ Seperti %ang telah di inisialisasikan
$aha = int kali= memiliki proses : kali *aktorialE 3 *aktorial
7/21/2019 TUPEN - Modul 1 - Fungsi Rekursif
6/9
16+ Telah di inisialisasikan $aha ;.har %es= untuk melakukan proses pengulangan program+
18+ Apakah ingin mengulang programTE@ Jika inputan H%III kem$ali ke langkah ke41+
15+ Namun jika inputan HtIITI kerjakan langkah ke41+
1+ Selesai+
I/7 F4,89art
7/21/2019 TUPEN - Modul 1 - Fungsi Rekursif
7/9
/7 S,)r9e ;,*e
7/21/2019 TUPEN - Modul 1 - Fungsi Rekursif
8/9
#include#include#include
int faktorial_a(int);
int faktorial_b(int);
int faktorial_a(int a){
if(a == 1)return(1);elsereturn(a*faktorial_a(a-1));
int faktorial_b(int b){
if(b == 1)
return(1);elsereturn(b*faktorial_b(b-1));
!oid "ain(){
char es;do{sste"($cls$);int %;
&rintf($''=============================================''n$);&rintf($'' ** +, +raktiku" ./.0 /esi 01 ** ''n$);&rintf($''=============================================''n$);&rintf($'' encari ilai 2aktorial dari %3 ''n$);&rintf($''---------------------------------------------''n$);&rintf($ => asukkan nilai % (bil. bulat &ositif)4 $);scanf($5d$6 7%);&rintf($ ==> 2aktorial dari 5d adalah4 5dn$6 %6 faktorial_a(%));
int ;&rintf($''=============================================''n$);&rintf($'' encari ilai 2aktorial dari 3 ''n$);&rintf($''---------------------------------------------''n$);
&rintf($ => asukkan nilai (bil. bulat &ositif)4 $);scanf($5d$6 7);&rintf($ ==> 2aktorial dari 5d adalah4 5dn$6 6 faktorial_b());&rintf($''=============================================''n$);&rintf($''================8ekan ,nter9================''nn$);:etch();
int kali;kali=faktorial_a(%)*faktorial_b();
&rintf($''
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%''n$);&rintf($'' +,/ +,? (%) ''n$);&rintf($''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%''n$);
&rintf($ => @asil &erkalian dari (5d%5d) = 5dn$6faktorial_a(%)6
faktorial_b()6kali);&rintf($''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%''n$);
7/21/2019 TUPEN - Modul 1 - Fungsi Rekursif
9/9
fflush(stdin);&rintf($ n:in "en:ulan: &ro:ra"AA (BC) 4 $);scanf($5c$67es);while(es == DD'' es == DBD);&rintf($''%%%%%%%%%%%%%%%{eri"a asih3%%%%%%%%%%%%%%%''nn$);
/I7 O)t& ? %: