NAMA : MAHRUS
NPM : 2017020100050
DEFINISI DAN FUNGSI REKURSIF SEKALIGUS CONTOHNYA
Rekursif berarti suatu proses yang memanggil dirinya
sendiri. Dalam rekursif sebenarnya terkandung pengertian prosedur atau fungsi.
Perbedaannya adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi
prosedur atau fungsi harus dipanggil lewat pemanggil prosedur atau fungsi.
Rekursif merupakan teknik pemrograman yang penting, dan beberapa bahasa
pemrograman modern mendukung keberadaan proses rekursif ini.
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
langkahlangkah sejenis. Contoh paling sederhana dari proses rekursi adalah
menghitung nilai faktorial dari bilangan bulat. Nilai faktorial, secara
rekursif dapat ditulis sebagai :
0! = 1
N! = N x (N-1)!, Untuk N > 0
yang secara notasi pemrograman bisa ditulis sebagai:
FAKTORIAL (0) = 1 1)
FAKTORIAL (N) = N * FAKTORIAL (N-1) 2)
Persamaan 2) di atas merupakan contoh hubungan
rekurens (recurrence relation), yang berarti bahwa nilai suatu fungsi dengan
argumen tertentu bisa dihitung dari fungsi yang sama dengan argumen yang lebih
kecil. Persamaan 1) yang tidak bersifat rekursif, disebut nilai awal. Setiap
fungsi rekursi paling sedikit mempuyai 1 (satu) nilai awal; jika tidak, fungsi
tersebut tidak bisa dihitung secara eksplisit.
Proses rekursi akan selesai , ini terletak pada
kondisi pernyataan if-nya. Jika pernyataan if menjadi FALSE maka akan
menghentikan proses rekursi
Prinsif dan proses rekursi:
Prinsif dan proses rekursi:
- Memiliki
kasus non rekursi(sederhana)
- Kasus
awal diarahkan menuju kasus sederhana
- Mendefinisikan
proses rekursi
Dalam bentuk pernyataan , biasanya menggunakan
pernyataan if( atau if……else)
Contoh program rekursi sederhana dengan DEV C++
Contoh program rekursi sederhana dengan DEV C++
#include <iostream>
using namespace std;
void cetak(int n)
{
if(n<=4)
cetak(n+1);
cout<<n<<endl;
}
using namespace std;
void cetak(int n)
{
if(n<=4)
cetak(n+1);
cout<<n<<endl;
}
int main(int argc, char *argv[])
{
cout<<“Hasil dengan cara menggunakan rekursif: “;
cetak(1);
system(“PAUSE”);
return EXIT_SUCCESS;
}
{
cout<<“Hasil dengan cara menggunakan rekursif: “;
cetak(1);
system(“PAUSE”);
return EXIT_SUCCESS;
}
Fungsi yang didefinisikan secara rekursif:
Langkah-langkah untuk mendefinisikan fungsi dengan
domain bilangan cacah:
- Langkah
basis: Definisikan nilai fungsi pada saat nol.
- Langkah
rekursif: Berikan aturan untuk mencari nilai fungs iuntuk setiap bilangan
bulat berdasarkan nilai fungsi pada bilangan bulat yang lebih kecil.
Definisi seperti itu disebut rekursif atau definisi
induktif.
Bentuk rekursif :
a. suatu subrutin/fungsi/ prosedur yang memanggil
dirinya sendiri.
b. Bentuk dimana pemanggilan subrutin terdapat dalam body subrutin
c. Dengan rekursi, program akan lebih mudah dilihat
b. Bentuk dimana pemanggilan subrutin terdapat dalam body subrutin
c. Dengan rekursi, program akan lebih mudah dilihat
ada
subroutine call yang melibatkan parameter yang nilainya menuju kondisi terminal
(recurrence)
ada kondisi terminal (basis) Bentuk rekursi bertujuan untuk :
b.menyederhanakan penulisan program c.menggantikan bentuk iterasi Syarat bentuk
rekursif:
Proses Rekursif :
Untuk memahami proses rekursif yang terjadi dalam
sebuah fungsi rekursif, perhatikan contoh sederhana di bawah ini. Contoh di
bawah ini menyajikan satu fungsi untuk menghitung harga pangkat suatu nilai
bilangan bulat misalnya 35, berdasarkan hubungan rekurens seperti
dijelaskan diatas, maka proses rekursif akan tampak pada gambar berikut ini:
Gambar:
Ilustrasi Penghitungan pangkat secara rekursif
Dari definisi tersebut, statemen pertama menunjukkan
nilai yang utama dari fungsi, dan statemen kedua menunjukan perulangan
penurunan dari n yaitu n-1.
Selain fungsi, prosedur juga dapat dilakukan operasi
rekursif. Sebagai contoh penggunaan proses rekursif pada prosedur adalah
prosedur pencarian biner (binary search). Dalam beberapa hal rekursif kurang
efisien dibandng proses iterasi. Dalam artian pemecahan secara rekursif dan
secara iterasi mempunyai keuntungan dan kekurangan yang bisa saling
diperbandingkan. Adalah cukup sulit untuk menentukan mana yang paling
sederhana, paling jelas, paling efisien dan paling
mudah dibanding yang lain. Bisa ditambahkan,
pemilihan secara iteratif maupun rekursif boleh dikatakan merupakan kesenangan
seorang programmer sesuai dengan keinginannya.
Kelebihan perulangan rekursif :
Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar
Dapat melakukan perulangan dengan batasan fungsi
Kekurangan perulangan rekursif :
Tidak bisa melakukan nested loop atau looping bersarang.
Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalaya akan menyebabkan stack tak cukup lagi (Stack Overum).
Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk. ( by : MAHRUS)
PENGERTIAN ALGORITMA ITERATIF DAN REKURSIF
A. ITERATIF
1.Pengertian iteratif
Perulangan iteratif merupakan perulangan yang melakukan proses perulangan terhadap sekelompok instruksi di mana perulangan tersebut akan berhenti jika batasan syarat sudah tidak terpenuhi.
Perulangan iteratif merupakan perulangan yang melakukan proses perulangan terhadap sekelompok instruksi di mana perulangan tersebut akan berhenti jika batasan syarat sudah tidak terpenuhi.
Algoritma iteratif
- Teknik Iteratif
merupakan suatu teknik pembuatan algoritma dengan pemanggilan
procedure beberapa kali atau hingga suatu kondisi tertentu
terpenuhi.
- Tidak ada variabel
lokal baru
- Program tidak
sederhana
- Menggunakan
perulangan for dan while
Perulangan iteratif merupakan
perulangan yang melakukan proses perulangan terhadap sekelompok intruksi.
Perulangan dilakukan dalam batasan syarat tertentu. Ketika syarat tersebut
tidak terpenuhi lagi maka perulangan aka terhenti.
Kelebihan perulangan iteratif:
• Mudah dipahami dan mudah melakukan debugging ketika ada perulangan yang salah.
• Dapat melakukan nested loop atau yang disebut dengan looping bersarang.
• Proses lebih singkat karena perulangan terjadi pada kondisi yang telah disesuaikan.
• Jarang terjadi overflow karena batasan dan syarat perulangan yang jelas.
• Mudah dipahami dan mudah melakukan debugging ketika ada perulangan yang salah.
• Dapat melakukan nested loop atau yang disebut dengan looping bersarang.
• Proses lebih singkat karena perulangan terjadi pada kondisi yang telah disesuaikan.
• Jarang terjadi overflow karena batasan dan syarat perulangan yang jelas.
Kelemahan perulangan
iteratif:
• Tidak dapat menggunakan batasan berupa fungsi.
• Perulangan dengan batasan yang luas akan menyulitkan dalam pembuatan program perulangan itu sendiri.
• Tidak dapat menggunakan batasan berupa fungsi.
• Perulangan dengan batasan yang luas akan menyulitkan dalam pembuatan program perulangan itu sendiri.
program 1
Bentuk fungsi iteratif
:
#include <cstdlib>
#include
<iostream>
using namespace std;
int jumlah(int n) {
int hasil = 0;
for (int i=0; i<n;
i=i+2)
hasil = hasil + i;
return hasil;
}
void cetak(int n) {
for (int i=0; i<n;
i=i+2)
cout << i
<< ” “;
}
int main(int argc, char
*argv[])
{
int n = 10;
cout <<
jumlah(n);
cetak(n);
system(“PAUSE”);
return EXIT_SUCCESS;
}
0 Komentar