Arsip

Rekursif dan Iteratif

A. REKURSIF
1.Pengertian Rekursif
                  Rekursif dapat diartikan bahwa suatu proses yang  bisa memanggil dirinya sendiri. sedikit menyimpang dari pengertian ada sedikit pendapat tentang Rekursif salah satunya adalah Menurut definisi dalam Microsoft Bookshelf, Rekursif adalah kemampuan suatu rutin untuk memanggil dirinya sendiri. Dalam Rekursif sebenarnya terkandung pengertian prosedur dan fungsi. Perbedaannya adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur dan fungsi harus dipanggil lewat pemanggil prosedur dan fungsi. Rekursif merupakan teknik pemrograman yang penting dan beberapa bahasa pemrograman mendukung keberadaan proses rekursif ini. Dalam prosedur dan fungsi, pemanggilan ke dirinya sendiri bisa berarti proses berulang yang tidak bisa diketahui kapan akan berakhir.
            Contoh paling sederhana dari proses rekursif ini adalah proses menghitung nilai factorial dari suatu bilangan bulat positif dan mencari deret Fibbonacci dari suatu bilangan bulat.
  1. Nilai factorial secara rekursif dapat ditulis sebagai
0 ! = 1
N ! = N x (N-1) !
yang secara pemrograman dapat ditulis sebagai
Faktorial(0)  = 1                                                                                       (1)
Faktorial(N) = N*Faktorial(N-1)                                                       (2)
Persamaan (2) di atas adalah 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) tidak bersifat rekursif, disebut nilai awal atau basis. Setiap fungsi rekursif paling sedikit  mempunyai satu nilai awal, jika tidak fungsi tersebut tidak bisa dihitung secara eksplisit.
  1. Bilangan Fibbonacci didefinisikan sebagai berikut
                 1    1    2    3    5    8    13    21    34    55    89   …
dari barisan tersebut dapat dilihat bahwa bilangan ke-N (N>2) dalam barisan dapat dicari dari dua bilangan sebelumnya yang terdekat dengan bilangan N, yaitu bilangan ke-(N-1) dan bilangan ke-(N-2), sehingga dapat dirumuskan sebagai
Fibbonacci(1) = 1                                                                                (1)
Fibbonacci(2) = 1                                                                                (2)
Fibbonacci(N) = Fibbonacci(N-1) + Fibbonacci(N-2)                       (3)
            Dengan persamaan (1) dan (2) adalah basis dan persamaan (3) adalah rekurensnya.
Rekursif Versus Iteratif
            Dalam beberapa situasi, pemecahan secara rekursif maupun secara iteratif mempunyai keuntungan dan kekurangan yang bisa saling diperbandingkan. Adalah cukup sulit untuk menentukan mana yang paling sederhana, paling jelas, paling efisien dan paling mudah disbanding yang lain. Boleh dikatakan pemilihan cara iterative maupun rekursif merupakan kesenangan seorang programmer dan tergantung konteks permasalahan yang akan dipecahkan sesuai dengan kesanggupan yang bersangkutan.
2.Fungsi rekursif
                           Pada pembahasan-pembahasan sebelumnya, telah dibahas tentang fungsi.  “Apa saja manfaat menggunakan Fungsi Rekursi?”. 
manfaat fungsi rekursif serta
perbandingannya dengan looping/perulangan:
REKURSIF
ITERATIF
Perulangan rekursif merupakan salah satu metode didalam pemrograman yang mana dalam sebuah fungsi terdapat intruksi yang memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri.
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 rekursif
  1. Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar
  2. Dapat melakukan perulangan dengan batasan fungsi
# Kelebihan perulangan iteratif
  1. # Mudah dipahami dan mudah dilakukan debuging ketika ada perulangan yang salah
  2. # Dapat melakukan nested loop atau yang disebut dengan looping bersarang
  3. # Proses lebih singkat karena perulangan terjadi pada kondisi yang telah disesuaikan
  4. # Jarang terjadi overflow karena batasan dan syarat perulangan yang jelas
Kekurangan perulangan rekursif
  1. Tidak bisa melakukan nested loop atau looping bersarang
  2. Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja
  3. 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)
  4. Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang dit
Kelemahan perulangan iterative
  1. Tidak dapat menggunakan batasan berupa fungsi
  2. Perulangan dengan batasan yang luas akan menyulitkan dalam pembuatan program perulangan itu sendiri

Perbedaan dan Persamaan Rekursif dan Iteratif :
Persamaan
– Sama-sama merupakan bentuk perulangan.
– Dilakukan pengecekan kondisi terlebih dahulu sebelum mengulang.
Perbedaan
– Iteratif menggunakan FOR, WHILE, DO-WHILE sedangkan rekursif hanya menggunakan IF.
– Iteratif dapat berjalan pada program yang terdiri dari prosedur (Tidak terdapat fungsi) sedangkan
rekursif merupakan fungsi.

Chaesar Chiper Program

Caesar Cipher is a form of cryptography. And is one of SymmetricCryptography modelsor conventional form. What is meant by symetriccryptography or symmetric cryptography key used for encryption anddecryption are the same.
* Plaintext is a message sent and easy to understand.
* Ciphertext is plaintext that has been modified by the method thatneedsspecial effort to understand its contents.
* To have encrypted data readable again bedecrypted it is necessary to use the same encryption key when done together. Soshared key (public key) is the current regulations do anddecryption encryption.

Some classic examples of conventional encryption:
A. Caesar Cipher
Is a method of encryption is done at the time of Julius Caesar. The alphabet is only used in either uppercase or lowercase. So thatwhen the process is performed on the numbers it is not possible. Way encryption ofthis method is to rotate the three steps.This form of encryption is asfollows:
abcdefghijklmnopqrstu vwxyz
DEFGHIJKLMNOPQRSTUVWX YZABC
Examples in C + + as follows:

# Include # include <cstdlib> # include # define <string.h> maks 50

Bilangan Pangkat Rekursif

Recursive function calls itself directly or indirectly, and the calling process is called recursively.
Case Example
34 = 3 x 3 x 3 x 3 = 81
B = A x A x A x … as much as b
Typically it can be made with for, while, or do while, but now we will discuss with recursive. In this article, we will try to create a flowchart with the help of an application called Raptor.
Making procedure in the Raptor
1. Change in advance to the Intermediate mode
   01-ubah-intermediate
2. Next do the right-click on the play tab, then select Add procedure
    02-add-procedure

3. The next dialog box will appear Procedure
Procedure name: The name of the procedure to be made
Parameters 1-6: This is a field for the variable parameters are required
Input check, if it serves as an input parameter.
Check the output, if the parameter is used for output

.
4.  In the example case, we will calculate the number of rank, then we use the fourth parameter consists of 3 inputs and 1 output
x: is used to input numbers that will be raised
y: input numbers are used to rank
z: save interim results which raised
result: displays the rank of x and y

       03-create-procedure
5. If so, click OK to open a new tab. The next page will show the new procedure. In the example shown below does not seem to use    Looping function, but at the bottom of the Call is used to call the function itself.
34 =
input x = 3
input y = 4
assignment z = 1
output result = z
The program runs:
x = 3
y = 4
z = 1 * 3
result
Call -> back to call the function from scratch with a new variable
x = 3
y = 3
z = 3 * 3
result
Call -> back to call the function from scratch with a new variable
and so on until y = 1
or that described by the table, to be as follows.
x y z result
3 4 1
3 3 3
3 2 9
3 1 81 81
6. Flowchart shapes
     04-fungi-pangkat
7. Later in the play tab we call these functions in a way nama_prosedur (parameter). See the example following flowchart.
      05-pemanggilan-fungsi-di-main
Visible on the play tab takes input x and y from the keyboard and then call the procedure yangs been made earlier.