菜鸟学Python - 斐波那契数列(二)上一次我们写了一个关于斐波那契数列的程序,为了提高对Python的灵活运用,
菜鸟学Python - 斐波那契数列(二)
上一次我们写了一个关于斐波那契数列的程序,为了提高对Python的灵活运用,这次再写一个小程序。大家可以比较一下每个程序的优势,看看是否得到什么灵感。
01?import?sys
02?
03?# Here's our main function. Python is pretty efficient here. You
04?# should notice that there are no braces. Python is dependant on
05?# whitespace to define blocks.
06?
07?def?main():
08???print?"\nHow many numbers of the sequence would you like?"
09?? n?=?int(sys.stdin.readline())
10???fibonacci(n)
11?
12?# Here's the fibonacci function. Like in Perl, you can assign multiple
13?# variables on a line without using a temporary variable. Also, the for?
14?# loop here works more like a foreach loop by setting a range from 0 to n.
15?
16?def?fibonacci(n):
17???a,b?=?0,1
18???for?i?in?range(0,n):
19?????print?a
20?????a,b,?=?b,a+b
21?
22?main()
两个函数实现了这个算法:1、main函数主要是获取用户输入,并执行程序。2、fibonacci函数就是主要的算法实现了。3、大家关键是看看程序的第20行,这个是程序的亮点。如果是java呢?def fib( ): ''' Unbounded generator for Fibonacci numbers ''' x, y = 0, 1 while True: yield x x, y = y, x + yif __name__ == "__main__": import itertools print list(itertools.islice(fib( ), 10))def fib( ): ''' Unbounded generator for Fibonacci numbers ''' x, y = 0, 1 while True: yield x x, y = y, x + yif __name__ == "__main__": import itertools print list(itertools.islice(fib( ), 10))
谢谢哈
不错不错,但是对于我这菜鸟来说 itertools 很少用 学习了
startNumber = int(raw_input("Enter the start number here "))
endNumber = int(raw_input("Enter the end number here "))
def fib(n):
if n < 2:
return n
return fib(n-2) + fib(n-1)
map(fib, range(startNumber, endNumber))
这个怎么样