斐波那契數列

2021-10-05 09:43:21 字數 2279 閱讀 4483

斐波那契數列(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秒,整數的...