Contoh program rekursif

hai..assalamualaikum wr. wb.

kali ini saya akan membagikan salah satu contoh program python yang menggunakan metode perulangan secara rekursif. sebenarnya, terdapat terdapat beberapa macam perulangan dalam bahasa pemrograman... namun kalin ini saya akan menggunakan perulangan secara rekursif.


Penjelasan mengenai Rekursif.

nah sebelum melangkah lebih jauh, sudah taukah kalian apa itu rekursif ?  oke, jika belum tau, saya akn mencoba untuk menjelaskannya secara singkat.. nah, "rekursif merupakan sebuah perulangan yang cara untuk mengulangnya adalah dengan cara memanggil dirinya sendiri". jadi, rekursif itu untuk melakukan looping dia akan memanggil dirinya sendiri didalam isi code nya.

nah gimana? udah jelas belum ? agak membingungkan ya.. hehe untuk lebih jelasnya, kalian bisa browsing sendiri di google yaa.. saya yakin sudah banyak yang memposting masalah ini. dengan beragam penjelasan yang berbeda - beda.

Penjelasan mengenai Stack.

oya... satu lagi nih... dalam program rekursif ini, saya menggunakan bantuan class stack. apa itu stack? baik, dipostingan ini akan sekalian saya jelaskan secara singkat mengenai stack itu sendiri. "stack merupakan salah satu list yang elemen puncaknya (TOP)  terdapat di atas. dan untuk menghapus maupun menambahkan elemen atau datanya, selalu dilakukan “di atas“ (TOP) ". nah udah jelas donk ? hehe untuk penjelasan lebih lanjut, silahkan search di google yaa.... kalian bisa mendapat kan informasi lebih disana.

penjelasan mengenai jalan dari program rekursif.

nah, pada program saya yang satu ini, kita hanya perlu menginputkan angka saja. misalkan saya menginputkan angka 9. maka hasil nya akan seperti berikut ini :
1*2:3+4-5*6:7+8-9=-0.619047619047619
panjang operasi akan bergantung pada angka yang kita masukkan. jika saya memasukkan angka 3,  maka hasilnya adalah : "1*2:3 = hasilnya" . nah cukup simple bukan ?

untuk urutan operasi matematika nya, saya menggunakan aturan operasi matematika dengan urutan yang benar. yaitu kali (x) yang berada di urutan pertama. kemudian operasi bagi (:) atau (/) di urutah kedua. selanjutnya adalah plus atau tambah (+) di urutan ketiga. dan yang terakhir adalah minus atau pengurangan (-). nah mungkin seperti itu kurang lebih yaa...

Code program dari contoh program rekursif.

nah, setelah saya jelaskan secara singkat seperti diatas, yuk langsung saja kita lihat code nya... oke.. langsung saja saya berikan source code nya .. ini diaa..


class Stack :
    def __init__(self):
        self.items = []
    def is_empty(self):
        return self.items == []
    def push(self, item):
        self.items.insert(0, item)
    def pop(self):
        return self.items.pop(0)
    def peek(self):
        return self.items[0]
    def size(self):
        return len(self.items)
    def popindeks(self,indeks):
        return self.items.pop(indeks)
    def find(self,data):
        for i in range(len(self.items)) :
            if self.items[i]==data :
                return i
        return None
    def masukan(self,indeks,item):
        self.items.insert(indeks, item)
    def jumlah(self):
        return len(self.items)
                
    
s = Stack()
h = Stack()
p = Stack()

def aska(a):
    if a > 0 :
        if a == 1:
            h.push(a)
            teks = '1'
            p.push(teks)
        else :
            s.push(a)
            h.push(a)
        if a > 1 :
            if a%4 == 3 :
                s.push(':')
                h.push(':')
            elif a%4 == 2 :
                s.push('*')
                h.push('*')
            elif a%4 == 1 :
                s.push('-')
                h.push('-')
            elif a%4 == 0 :
                s.push('+')
                h.push('+')
        return aska((a-1))
    else :
        if not s.is_empty():
            isi = s.pop()
            teks = p.pop()
            teks += str(isi)
            p.push(teks)
            return aska(0)
        elif h.jumlah()>1:
            kali = h.find('*')
            if kali != None :
                h.popindeks(kali)
                kanan = h.popindeks(kali)
                kiri = h.popindeks(kali-1)
                hasil = kiri*kanan
                h.masukan(kali-1, hasil)
                return aska(0)
            bagi = h.find(':')
            if bagi != None :
                h.popindeks(bagi)
                kanan = h.popindeks(bagi)
                kiri = h.popindeks(bagi-1)
                hasil = kiri/kanan
                h.masukan(bagi-1, hasil)
                return aska(0)
            minus = h.find('-')
            if minus != None :
                h.popindeks(minus)
                kanan = h.popindeks(minus)
                kiri = h.popindeks(minus-1)
                hasil = kiri-kanan
                h.masukan(minus-1, hasil)
                return aska(0)
            tambah = h.find('+')
            if tambah != None :
                h.popindeks(tambah)
                kanan = h.popindeks(tambah)
                kiri = h.popindeks(tambah-1)
                hasil = kiri+kanan
                h.masukan(tambah-1, hasil)
                return aska(0)
            
        hasil = p.pop() + '=' + str(h.pop())
        return hasil
            
a = int(input("masukkan angka :"))    
print (aska(a))
'''
Created on May 18, 2016

@author: Moham villa apdg
'''





Hasil running dari code program rekursif.

nah gimana ? membingungkan tidak ? hehe.. jika kalian belum terbiasa, code di atas akan sedikit membuat kepala kita puyeng.. hehe namun hasil code diatas sangat simpel kok... kalu tidak percaya, tengok saja hasil screenshoot ketika program diatas saya jalankan.. ini dia...



cukup simple kan hasilnya ?  nah untuk membuktikan, kalian bisa copy dan  paste program di atas di IDLE  python sendiri. atau  compiler python lainnya. lalu jalankan seperti biasa.

nah, kalian juga bisa merubah nama metode atau fungsinya sesuai yang kamu inginkan. karena saya menamakan metode nya dengan nama teman saya. yaitu "azka". karena program ini saya buat karena teman saya meminta bantuan saya untuk mengerjaan soal dari asisten praktikum nya. hehe namun, kalian bisa merubah nama diatas sesuai yang kalian inginkan. misalkan nama kalian.

oke, demikian postingan tentang contoh program rekursif dalam python dengan menggunakan stack ini. semoga memberi manfaat bagi yang membutuhkan... jangan lupa di share ya.. jika ada pertanyaan, bisa diajukan di komentar. mohon maaf jika ada kesalahan karena saya masih newbie. wassalamualaikum wr. wb. :)

Previous
This is the oldest page
Thanks for your comment