日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python程序题斐波那契数列_Python编程题9--斐波那契数列

發布時間:2025/3/15 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python程序题斐波那契数列_Python编程题9--斐波那契数列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目1

已知一個數列:1、1、2、3、5、8、13、……,其規律為從第3項開始,每一項都等于其前兩項的和,這個數列就是斐波那契數列。

請求出符合斐波那契數列規律的第11項。

代碼實現--非遞歸

def fib_show(n):

a, b = 0, 1

while n > 0:

a, b = b, a + b

n -= 1

return a

print("斐波那契數列 第11項:{}".format(fib_show(11)))

代碼實現--遞歸

def fib_recursive(n):

if n == 1 or n == 2:

return 1

return fib_recursive(n - 1) + fib_recursive(n - 2)

print("斐波那契數列 第11項:{}".format(fib_recursive(11)))

注意:遞歸方式實現起來比較簡潔,但其效率較低,不推薦。

題目2

請求出符合斐波那契數列規律的前11項。

代碼實現一

def fib_show(n):

a, b = 0, 1

while n > 0:

if n == 1:

print(b)

else:

print(b, end=", ")

a, b = b, a + b

n -= 1

fib_show(11)

代碼實現二

def fib_show(n):

if n == 1:

return "1"

if n == 2:

return "1, 1"

res = [1, 1]

for i in range(2, n):

res.append(res[-1] + res[-2])

return ", ".join([str(i) for i in res])

print("斐波那契數列 前11項:{}".format(fib_show(11)))

題目3

對于斐波那契數列:1、1、2、3、5、8、13、……。我們把其數列中的數稱為斐波那契數(Fibonacci數)。

如果給定一個數N,需要讓其變為一個Fibonacci數,每一步可以把當前數字N變為N-1或者N+1,那么請求出最少需要多少步,才可以把N變為Fibonacci數。

例如:

給定一個數15,與其相鄰的兩個Fibonacci數分別為 13 和 21 ,那么這個數15要變為 13 需要兩步,變為 21 則需要六步,所以在這里最少需要兩步。

實現思路

分別求出與所指定數相鄰的兩個Fibonacci數:a 和 b

分別求出所指定數與 a 和 b 的距離步數 left_step 和 right_step

對比 left_step 和 right_step,數值最小的即為所需的最小步數

代碼實現

def fib_step(num):

a, b = 0, 1

min_step = 0

while True:

# 當 b 大于輸入的數 num 時,a 就是上一次循環的 b ,此時 a 肯定小于 num

if num >= a and num <= b:

left_step = num - a

right_step = b - num

if left_step < right_step:

min_step = left_step

else:

min_step = right_step

break

a, b = b, a + b

return min_step

print("如果把 15 變為Fibonacci數,最少需要 {} 步".format(fib_step(15)))

總結

以上是生活随笔為你收集整理的python程序题斐波那契数列_Python编程题9--斐波那契数列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。