Python 用Python實現斐波那契數列

2021-09-02 07:52:41 字數 1563 閱讀 3175

關於斐波那契數列介紹

斐波那契數列(fibonacci sequence),又稱**分割數列、因數學家列昂納多·斐波那契(leonardoda fibonacci)以兔子繁殖為例子而引入,故又稱為「兔子數列」,指的是這樣乙個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞迴的方法定義:f(0)=1,f(1)=1, f(n)=f(n-1)+f(n-2)(n>=2,n∈n*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,為此,美國數學會從2023年起出版了以《斐波納契數列季刊》為名的乙份數學雜誌,用於專門刊載這方面的研究成果

第一種方法:

def fibonacci(n):

a = 0

b = 1

for _ in range(n):

yield b

a, b = b, a + b

# 1) 列印前20個數:

for x in fibonacci(20):

print(x)

# 2) 列印前40個斐波那契數的和

print(sum(fibonacci(40)))

第二種方法:

num =int(input("請輸入乙個數字返回你乙個斐波那契數列:"))

list_nums=[1,1]

def calculate(num,list_nums):

i = 0

if num>2:

while i < num:

list_nums.insert(i+2,list_nums[i]+list_nums[i+1])

i+=1

else:

print("數列已生成")

print(list_nums)

return list_nums[num-1]

else:

return list_nums[0]

res = calculate(num,list_nums)

print("="*50)

print("第%s個:%s"%(num,res))

第三種方法:

def memo(func):

cache = {}

def wrap(*args):

if args not in cache:

cache[args] = func(*args)

return cache[args]

return wrap

@ memo

def fib(i):

if i < 2:

return 1

return fib(i-1) + fib(i-2)

print(fib(5))

第四種方法:

fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2)

f = [fib(i) for i in range(1,7)]

print(f)

pypy 用python實現的python

pypy 分為兩部分 乙個 python 的實現 和 乙個編譯器 pypy provides infrastructure for building interpreters in r python.this infrastructure makes it much easier than star...

用python實現SYN Flooding攻擊

作業裡的 直接這裡copy在這裡記錄一下。在tcp ip協議中,當客戶端試著與伺服器間建立tcp連線時,正常情況下客戶端與伺服器端進行tcp三次握手 1.客戶端通過傳送syn同步 synchronize 資訊到伺服器要求建立連線。2.伺服器通過響應客戶端syn ack以抄收 acknowledge ...

用python實現棧 Python實現棧的方法

usr bin env python 定義乙個列表來模擬棧 stack def pu 出棧,用到了pop 函式 def popit if len stack 0 print cannot pop from an empty stack else print removed stack.pop 編歷棧...