Đề bài: Viết chương trình in ra n số đầu trong dãy Fibonacci.
PS: dãy fibonacci là dãy số tự nhiên có số sau là tổng của 2 số liền kề trước nó:
0 1 1 2 3 5 8 13 21 34 .....
Dãy trên là kết quả khi cho n = 10.
Use your head now!
Gửi bài giải qua comment nhé. Đang không tập trung đc @@. Mai nghĩ.......
(Không chơi search nhá, tự làm :-j )
25-12-2012: UPDATE
do bài này đã "bị" xem quá nhiều nên tớ update các kết quả đúng ở đây để tránh gây ảnh hưởng xấu đến người đọc :D
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def fib(n): | |
if n < 2: | |
return n | |
else: | |
return fib(n-1) + fib(n-2) | |
def fib_fast(n): | |
from math import sqrt | |
s5 = sqrt(5) | |
x = ((1 + s5) / 2) ** n | |
y = ((1 - s5) / 2) ** n | |
return int((x - y)/s5) | |
def print_fib(n): | |
for i in range(n): | |
print fib(i), | |
for i in range(n): | |
print fib_fast(i), | |
def print_fib2(n): | |
fibs = [0, 1] | |
a, b = 0, 1 | |
if n == 0: | |
print a | |
elif n == 1: | |
print a, b | |
else: | |
print 0, 1, | |
for i in range(2, n): | |
c = a + b | |
a, b = b, c | |
print c, | |
if __name__ == "__main__": | |
print_fib(10) | |
print_fib2(10) |
Paste luôn lên đây thì copy về sẽ không chạy được (do dấu tab để thụt dòng lệnh bị blog lờ đi coi như không có.
ReplyDeleteXem code đầy đủ ở đây.
http://pastebin.com/dUppQMih
http://pastebin.com/dUppQMih
Deletegiờ đọc lại chả hiểu viết cái của nợ gì đây =))
ReplyDeleteupdate: file code python với nhiều cách để in ra n số đầu tiên trong dãy fibonacci:
ReplyDeletehttps://github.com/hvnsweeting/FAMILUG/blob/master/Python/fibs.py
bài làm sử dụng từ khóa yield, một phong cách generator, một phong cách Pythonic :D
ReplyDeletehttps://github.com/hvnsweeting/FAMILUG/blob/master/Python/fib_yield.py