Anda di halaman 1dari 7

TUGAS 13

MODULAR FUNGSI REKURSIF

Disusun Oleh :
NAMA :Ferdy Yudha Irwiansyah
NIM : 21072032

MATA KULIAH : PENGANTAR CODING

FAKULTAS TEKNIK

PROGRAM STUDI PENDIDIKAN TEKNIK MESIN

UNIVERSITAS NEGERI PADANG


F. Pertanyaan Pemahaman
1. Jelaskan apa yang dimaksud dengan fungsi rekursif. Apa syarat-syarat yang
diperlukan dalam menyusun sebuah fungsi rekursif.
Jawab : Rekursif adalah suatu proses dari sebuah fungsi yang dapat memanggil
dirinya sendiri secara berulang-ulang. Berbeda dengan fungsi atau prosedur yang
mana keduanya hanya bisa dilakukan pemanggilan dari fungsi atau prosedur lain,
sementara rekursif dapat memanggil fungsinya sendiri.
2. Sebutkan proses yang terjadi pada pemanggilan fungsi rekursif. Dapatkah proses
rekursif terjadi selamanya (tanpa akhir)? Uraikan jawaban dengan ringkas dan
jelas. Jawab : Pemanggilan prosedur atau fungsi ke dirinya sendiri bisa berarti
proses yang berulang yang tidak bisa diketahui kapan akan berakhir. Dalam
pemakaian sehari-hari, rekursi merupakan teknik pemrograman yang berdaya
guna untuk digunakan pada pekerjaan pemrograman dengan
mengeksperisikannya ke dalam suku-suku dari program lain dengan
menambahkan langkah-langkah sejenis. Fungsi rekursif adalah metode
perulangan yang terjadi akibat pengeksekusian suatu fungsi yang mana fungsi
tersebut memanggil dirinya sendiri. Bisa jadi ia terus memanggil dirinya sendiri
tanpa batas, atau mungkin dia akan berhenti jika kondisi tertentu terpenuhi.
3. Jelaskan perbedaan antara rekursif dan iterasi (loop) ?
Jawab : Rekursif adalah ketika pernyataan dalam suatu fungsi memanggil dirinya
berulang kali. Iterasi adalah ketika loop berulang kali dieksekusi sampai kondisi
kontrol menjadi salah. Perbedaan utama antara rekursi dan iterasi adalah
bahwa rekursif adalah suatu proses, selalu diterapkan pada suatu fungsi. Iterasi ini
diterapkan pada set instruksi yang ingin kita eksekusi berulang kali.
Grafik perbandingan

Dasar untuk
Rekursi Perulangan
perbandingan

Pernyataan dalam tubuh fungsi Mengizinkan kumpulan instruksi


Dasar
memanggil fungsi itu sendiri. dieksekusi berulang kali.

Iterasi termasuk inisialisasi, kondisi,


Dalam fungsi rekursif, hanya eksekusi pernyataan dalam loop dan
Format kondisi terminasi (base case) pembaruan (kenaikan dan penurunan)
yang ditentukan. variabel kontrol.

Pernyataan bersyarat disertakan


Pernyataan iterasi berulang kali
dalam tubuh fungsi untuk memaksa
Penghentian dieksekusi sampai kondisi tertentu
fungsi kembali tanpa panggilan
tercapai.
rekursi dieksekusi.

Jika fungsi tidak konvergen ke Jika kondisi kontrol dalam


beberapa kondisi yang disebut pernyataan iterasi tidak pernah
Kondisi
(kasus dasar), itu menyebabkan menjadi salah, itu mengarah ke
rekursi tak terbatas. iterasi tak terbatas.

Pengulangan Rekursi tak terbatas dapat Infinite loop menggunakan siklus


Tanpa Batas merusak sistem. CPU berulang kali.

Rekursi selalu diterapkan pada Iterasi diterapkan pada pernyataan


Terapan
fungsi. iterasi atau "loop".

Stack digunakan untuk


menyimpan set variabel lokal
Tumpukan Tidak menggunakan tumpukan.
baru dan parameter setiap kali
fungsi dipanggil.

Rekursi memiliki overhead Tidak ada overhead panggilan


Atas
panggilan fungsi yang berulang. fungsi berulang.

Kecepatan Lambat dalam eksekusi. Eksekusi cepat.

Rekursi mengurangi ukuran


Ukuran Kode Iterasi membuat kode lebih lama.
kode.
4. Apabila sebuah program yang memuat fungsi rekursif dieksekusi, jelaskan
bagimana kompiler menangani variabel-variabel lokal yang terdapat dalam fungsi
pada setiap pemanggilan.
Jawab : Local Variable adalah Automatic duration yang mempunyai arti bahwa
variabel tersebut akan dibuat disaat kompilator melawati deklarasi yang ada di
dalam suatu scope dan dihancurkan setelah keluar dari scope tersebut. Seperti yang
kita ketahui bahwa program dalam C++ selalu terdapat fungsi utama dengan nama
main(). Apabila kita mendeklarasikan sebuah variable diluar fungsi main(), dan
fungsi lainnya, maka dengan sendirinya compiler akan menganggap variabel
tersebut sebagai variable global. Kemudian, karena dideklarasikan di awal file
maka variabel global dibuat saat program dimulai, dan dimusnahkan ketika
program berakhir. Ini disebut durasi statis.

G. Latihan Pemrograman
1. Menggunakan Bahasa pemrograman C standar dengan menggunakan fungsi-fungsi
I/O standar getchar( ) dan putchar( ), buatlah sebuah program rekursif untuk meminta
dituliskan sembarang kalimat hingga ditekannya tombol <ENTER> dan menuliskan
kembali kalimat tersebut secara terbalik. Sebagai contoh, jika dituliskan:
Selamat malam nak
Maka program akan menuliskan kembali kalimat ini seperti berikut:
kan malam tamaleS

Jawab :
Source code
#include
<iostream>
#include
<string.h>
#include
<stdio.h> using
namespace std;
char kalimat
[100]; int
pjgkalimat;
main(void){
printf("\n\n=============FUNGSI REKURSIF=============\n\n");
printf("\n\n PROGRAM PEMBALIK KATA \n\n");
printf("\n\n=========================================\n\n");
printf("\n\n Nama : FERDY YUDHA
IRWIANSYAH \n\n"); printf("\n\n
NIM : 21072032 \n\n");
printf("\n\n=========================================\n\n");
printf("\nMasukkan Sembarang Kalimat
:\n"); gets (kalimat);
int x =
strlen(kalimat);
for(int i=x-
1;i>=0;i--){
cout<<kalimat[i];
}return 0;
}

Hasil compile :

2. Kasus perkalian dua buah bilangan bulat positif dapat dilakukan dengan metode
penjumlahan sebagai berikut: 12 x 6 = 12 + 12 + 12 + 12 +12 +12
Buatlah sebuah program menggunakan fungsi rekursif untuk menghitung hasil
perkalian dengan metode penjumlahan seperti contoh di atas.
Jawab :
Source code
#include
<stdio.h> using
namespace std;
int perkalian (int a,int
b); int main()
{ printf("\n=====================================================
\n");
printf("\n PROGRAM REKURSIF \n");
printf("\nMenghitung Hasil Perkalian dengan Metode Penjumlahan \n");
printf("\n=====================================================\n");
printf("\nNama:FERDY
YUDHA IRWIANSYAH\n");
printf("\nNIM : 21072032\n");
printf("\n=====================================================\n");
printf("Hasil kali 7x6 = 7 + 7 + 7 + 7 + 7 + 7 = %i",perkalian(7,6));
}int perkalian (int a,int b)
{
if(b==
1){
return
a;
}else{
return a+perkalian(a,b-1);
}
}

Hasil compile :

Anda mungkin juga menyukai