Anda di halaman 1dari 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/ETERAN1 .AA TIMUR
2"11
LEM-AR PENGESAHAN
Telah diperiksa dan disetujui Tugas Pendahuluan :
Praktikum : Algoritma Struktur Data
Modul : 1
Judul : FUNGS !"#U!SF
!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
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: 0
n
dengan n $erupa $ilangan $ulat positi*+
Solusi dari persoalan ini:
J#A n 1 1 MA#A 0
n
1 0
S"2AN TU: 0
n
1 0 3 0
n41
Se$agai .ontoh diam$il nilai 015 dengan n16& pelukisan proses peme.ahann%a:
7erikut adalah *ungsi pangkat dengan menggunakan solusi di atas:
a adalah $ilangan %ang dipangkatkan& sedangkan $ adalah $ilangan pemangkatn%a+ Jika
nilai 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+
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
III7 A45,ritma
1+ Mulai+
'+ Telah di inisialisasi $ah:a ; int *aktorial<a= untuk nilai >& ? ;int *aktorial<$= untuk nilai %+
6+ nputkan $ilangan untuk *aktorial dari nilai > : @
8+ 7ilangan dari nilai > %ang telah di inputkan akan di *aktorialkan+
5+ ,etak hasil *aktorial dari nilai >+
A+ 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
$ah:a = int kali= memiliki proses : kali 1 *aktorial<aD>E 3 *aktorial<$D%E& lalu lakukan langkah
ke411+
1'+ ,etak hasil dari proses perkalian dari kedua nilai *aktorial >& ? %+ 2alu lakukan langkah ke418+
16+ Telah di inisialisasikan $ah:a ;.har %es= untuk melakukan proses pengulangan program+
18+ Apakah ingin mengulang programDFGTE@ Jika inputan 1 H%IGIFI kem$ali ke langkah ke41+
15+ Namun jika inputan 1 HtIGITI kerjakan langkah ke41A+
1A+ Selesai+
I/7 F4,89:art
/7 S,)r9e ;,*e
#include<stdio.h>
#include<conio.h>
#include<windows.h>
int faktorial_a(int);
int faktorial_b(int);
int faktorial_a(int a)
{
if(a == 1)
return(1);
else
return(a*faktorial_a(a-1));

int faktorial_b(int b)
{
if(b == 1)
return(1);
else
return(b*faktorial_b(b-1));

!oid "ain()
{
char #es;
do
{
s#ste"($cls$);
int %;
&rintf($''=============================================''(n$);
&rintf($'' ** )*+,- +raktiku" ../.0 /esi 01 ** ''(n$);
&rintf($''=============================================''(n$);
&rintf($'' 1encari -ilai 2aktorial dari %3 ''(n$);
&rintf($''---------------------------------------------''(n$);
&rintf($ => 1asukkan nilai % (bil. bulat &ositif)4 $);
scanf($5d$6 7%);
&rintf($ ==> 2aktorial dari 5d adalah4 5d(n$6 %6 faktorial_a(%));
int #;
&rintf($''=============================================''(n$);
&rintf($'' 1encari -ilai 2aktorial dari #3 ''(n$);
&rintf($''---------------------------------------------''(n$);
&rintf($ => 1asukkan nilai # (bil. bulat &ositif)4 $);
scanf($5d$6 7#);
&rintf($ ==> 2aktorial dari 5d adalah4 5d(n$6 #6 faktorial_b(#));
&rintf($''=============================================''(n$);
&rintf($''================8)ekan ,nter9================''(n(n$);
:etch();
int kali;
kali=faktorial_a(%)*faktorial_b(#);
&rintf($''
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%''(n$);
&rintf($'' ;+,<./= +,<>.?=.- (%) ''(n$);
&rintf($''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%''(n$);
&rintf($ => @asil &erkalian dari (5d%5d) = 5d(n$6faktorial_a(%)6
faktorial_b(#)6kali);
&rintf($''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%''(n$);
fflush(stdin);
&rintf($ =n:in "en:ulan: &ro:ra"AA (BC)) 4 $);
scanf($5c$67#es);

while(#es == D#D'' #es == DBD);


&rintf($''%%%%%%%%%%%%%%%{)eri"a >asih3%%%%%%%%%%%%%%%''(n(n$);

/I7 O)t<)t
Menu Jperasi Perkalian $ilangan dari kedua nilai *aktorial >& ? %:

Anda mungkin juga menyukai