deret fibonacci di python
September 14, 2010 5 Comments
yo yo yo…
setelah kemarin memposting tentang deret fibonacci dan beberapa postingan tentang dasar pemrograman python, eh.. iseng deh kepingin bikin program sederhana untuk menampilkan deret fibonacci, kekeekeke..
alhasil jadi deh.. berikut source codenya, mungkin bisa dikembangkan lebih lanjut:
#!/usr/bin/env python
import os, sys
if sys.platform == 'linux-i386' or sys.platform == 'linux2':
hapus = "clear"
if sys.platform == 'win32':
hapus = "cls"
print "deret fibonacci in python"
jumlah = raw_input("masukkan jumlah anggota deret yang diinginkan: ")
a=int(jumlah)
if a == 0:
print "anda salah memasukkan angka!!"
elif a == 1:
print "-----------deret fibonaccinya adalah-------------------"
print "[0]"
print "-------------------------------------------------------"
elif a == 2:
print "-----------deret fibonaccinya adalah-------------------"
print "[0,1]"
print "-------------------------------------------------------"
else:
fibonacci = [0,1]
#x = int(a)
q = (a - 1)
for i in range(1,q):
x = int(fibonacci[-1])
y = int(fibonacci[-2])
z = x+y
fibonacci.append(z)
os.system(hapus)
print "-----------deret fibonaccinya adalah-------------------"
print fibonacci
print "-------------------------------------------------------"
semoga bermanfaat
-AKF-
Hai.
Maaf, saya tidak bisa bahasa Python. Jadi maaf kalo ada salah tafsir source code bung akfcode.
Dari yang saya baca, sepertinya bung akfcode menggunakan invarian U(n) = U(n-1) + U(n-2). Walaupun invarian ini benar, tetapi dikategorikan sebagai pendekatan “naif”. Jangan tersinggung ya. Mungkin ada baiknya melihat dari sudut pandang lain.
Metode “naif” ini sangat lambat karena membutuhkan iterasi dari suku ke-1 sampai suku ke-n. Dengan demikian kompleksitasnya O(n). Misalkan user meminta U(30), metode ini secara diam-diam mencari semua suku U(1), U(2), U(3)… U(29) yang sebenarnya “bukan” jawaban yang diinginkan.
Sebagai referensi :
http://en.wikipedia.org/wiki/Fibonacci_number#Another_identity
Dengan menggunakan invarian itu, program bisa dibuat berjalan dengan kompleksitas yang lebih rendah. Karena dari beberapa U(n), program bisa langsung “lompat” ke sekitar U(2n). Artinya kompleksitasnya dekat dengan binary search, yaitu O(log n). Tepatnya berapa saya tidak tahu.
Selamat mencoba
mas Hendra,:terima kasih atas masukkannya, semoga bermanfaat, jadi memang benar untuk metode dari mas Hendra lebih cepat, dan dari source code saya memang dilakukan iterasi untuk mencari suku ke-n terlebih dahulu, tapi maaf sebelumnya, memang posting ini ditulis dengan tujuan sebagai contoh kasus untuk posting sebelumnya, dimana saya memposting tentang list atau bisa disebut deret, dan manipulasi anggota list tersebut, sedangkan untuk metode yang menggunakan fungsi – fungsi matematika, harus mengimport module “math” dulu, lha, kan belum sempat diposting untuk import module, jadi sebenarnya maksud disini adalah agar pembaca yang budiman bisa tahu contoh kasus dari posting yang sudah – sudah, jadi runut juga saya menulisnya, btw terima – kasih telah berkunjung dan atas masukkan yang membangun, salam kenal, Jaya Selalu
salam
-AKF-
oh iya tambahan lagi, bung Hendra, jadi begini, maksud saya sebuah tulisan itu ditulis untuk dimengerti, dengan mudah dan gampang dicerna, lha maksud saya untuk deret fibonacci ini semudah – mudahnya untuk dimengerti adalah dengan model pembentukan dasarnya, sapa tahu ada anak TK yang masih mengerti tentang tambah dan kurang, sedang membaca blog saya, jadi satu keuntungan dong, dia masih TK udah bisa membentuk deret fibonacci dengan jumlah elemen mencapai ribuan, hanya dengan tambah – tambahan saja lho
Maaf, ralat.
Kalimat “bukan jawaban yang diinginkan” pada paragraf 3 maksudnya adalah “tidak terlalu perlu” atau “tidak harus”.
terima kasih masukkanya mas,
salam hangat
-AKF-