斐波那契數列(fibonacci sequence),又稱**分割數列、因數學家列昂納多·斐波那契(leonardoda fibonacci)以兔子繁殖為例子而引入,故又稱為「兔子數列」,指的是這樣乙個數列:1、1、2、3、5、8、13、21、34、55、89、144、、、
**實現:
1、列印100以內的fib
print(0)
print(1)
a=0b=1
while true:
c = a+b
if c >100:
break
a = b
b = c #每迴圈一次,b的值都重新賦給a,c的和都重新賦值給b
print(c)
2、列印fib的第101項
a = 0
b = 1
print(0,0)
print(1,1)
index = 1
while true:
c = a+b
index +=1
print('index={},fib={}'.format(index,c))
a = b
b = c
if index==101:break
3、函式迴圈,並列印101項
def fib_v1(n):
a=b=1
for i in range(n-2):
a,b=b,a+b
return b
fib_v1(101)
4、遞迴函式
def fib_v2(n): #慢
if n<3:
return 1
return fib_v2(n-1) + fib_v2(n-2)
fib_v2(35)
#或者:
def fib_v2(n):
return 1 if n <3 else fib_v2(n-1)+fib_v2(n-2)
fib_v2(35)
5、使用functools模組
from functools import lru_cache
@lru_cache()
def fib(n):
return 1 if n <3 else fib(n-1) + fib(n-2)
fib(101)
-----
573147844013817084101
6、定義乙個斐波那契數列的類,要求方便呼叫,計算第n項。有增加迭代數列的方法、返回數列長度、支援索引查詢數列項。
class fib:
def __init__(self):
self.items = [0,1,1]
def __call__(self, index):
# return self.__getitem__(index)
return self[index] #轉而呼叫__getitem__
def __iter__(self):
yield from self.items
def __len__(self):
return len(self.items)
def __getitem__(self, index):
if index < 0:
raise indexerror('wrong index')
for i in range(len(self), index+1): #index >= len(self.items)
return self.items[index]
# __call__ = __getitem__
def __str__(self):
return str(self.items)
__repr__ = __str__
-----------------------------------
fib = fib()
print(fib(5), len(fib)) ---> 5 6
for x in enumerate(fib):
print(x, end='\t') ---> (0, 0) (1, 1) (2, 1) (3, 2) (4, 3) (5, 5)
print(fib[5], fib[6], fib) ---> 5 8 [0, 1, 1, 2, 3, 5, 8]
斐波那契數列 斐波那契數列python實現
斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...
迴圈斐波那契數列 斐波那契數列應用
什麼是斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144 這個數列從第3項開始,每一項都等於前兩項之和 台階問題 有一段樓梯有10級台階,規定每一步只能跨一級或兩級,要登上第10級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...
斐波那契數列
1 題目描述 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。斐波那契數列的定義如下 輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入包括乙個整數n 1 n 70 輸出 對應每個測試案例,輸出第n項斐波那契數列的值。2 這是九度上的乙個題,要求時間限制1秒,整數的...