python显示1000以内的斐波拉契数列_python实现斐波那契数列
首先想到的是用遞歸來解決
求100內的斐波那契數列:
def diGui(num=100):
a,b = 0,1
# 為了方便看打印,我就用list存一下
lit = []
while a < num:
# print(a)
lit.append(a)
a, b = b,a+b
print(lit)
diGui()
# 打印輸出為
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
# 求1000內的
diGui(1000)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
遞歸是比較容易解決,但是這個對內存很不友好,要是后面求10000,100000,甚至更大的呢!
所以就想到可以用python的生成器,如果一個函數中有yield關鍵字,那他就是一個生成器(generator).
import sys
# 這里其實和上面的遞歸寫法很類似,只需要把print(a)換成yeild就行
def generator(num=100):
a,b = 0,1
while a < num:
# print(a)
yield a
a, b = b,a+b
# 注意:這里的g是一個生成器對象
g = generator()
print(type(g))
# 然后我調用next()方法取值
while True:
print(next(g))
# 重復調用next()方法,但是這里會拋異常,因為重復調用next()方法,直到結束
Traceback (most recent call last):
File "D:/xxxxxxx.py", line 60, in
print(next(g))
StopIteration
0
1
1
2
3
5
8
13
21
34
55
89
Process finished with exit code 1
# 所以我們可以try一下,捕獲它,讓程序正常結束
while True:
try:
# print(next(g))
n = next(g)
if n < 100:
print(n)
except StopIteration:
print('沒有了!')
sys.exit() # sys是python的模塊,需要import
# 最后輸出
0
1
1
2
3
5
8
13
21
34
55
89
沒有了!
總結
以上是生活随笔為你收集整理的python显示1000以内的斐波拉契数列_python实现斐波那契数列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黑苹果系统坏了如何恢复_黑苹果怎么修复C
- 下一篇: aopaspect区别_面试官:什么是A