python斐波那契數列演算法

2021-09-25 19:04:16 字數 1815 閱讀 1439

推理過程(公司筆試面試型別題)(斐波那契數列)

第乙個月: 1 小兔子 =1

第二個月: 1 小兔子 =1

第三個月: 1 對大兔子 1 對小兔子(本月生) = 1 + 1 = 2

第四個月: 1 對大兔子 1 對小兔子(本月生) 1 對小兔子(上月生)= 1 + 1 + 1 = 3

第五個月: 2 對大兔子 2 對小兔子(本月生) 1 對小兔子(上月生)= 2 + 2 + 1 = 5

第六個月: 3 對大兔子 3 對小兔子(本月生) 2 對小兔子(上月生)= 3 + 3 + 2 = 8

第七個月: 5 對大兔子 5 對小兔子(本月生) 3 對小兔子(上月生)= 5 + 5 + 3 =13

………………以此類推

基本**如下:(三種寫法)

n1=1

n2=1

num = input("請輸入計算的斐波那契數列個數:")

if num.isdigit():#isdigit()自動判斷小於零

num=int(num)

if num == 0:

print("輸入內容非法")

if num==1:

print(n2)

if num==2:

print(n2,n2)

if num>=3:

for i in range(1,num+1):

if i==1:

print(1,end=',')

elif i==2:

print(1,end=',')

else:

# result =n1 +n2 #計算當前月份的兔子數

# print(result,end=',')

# #交換資料

# n1 = n2

# n2 = result #兩種交換數值寫法

n1, n2 = n2, n1 + n2

print(n2, end=',') # 靈活的語法結構

pass

else:

print("輸入內容非法")

利用遞迴實現斐波那契額演算法**如下:
def recur_fibo(n):

"""遞迴函式

輸出斐波那契數列"""

if n <= 1:

return n

else:

#返回第n個元素的前兩個數相加的值

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

# 獲取使用者輸入

nterms = int(input("您要輸出幾項? "))

# 檢查輸入的數字是否正確

if nterms <= 0:

print("輸入正數")

else:

print("斐波那契數列:")

for i in range(nterms):

print(recur_fibo(i),end=' ')

利用lambda表示式 + 遞迴實現斐波那契數列寫法如下:
while true:

n=int(input("你要輸入幾項?:"))

if n<= 0:

print("輸入正數")

else:

fbnq=lambda n: fbnq(n-1)+fbnq(n-2) if n>2 else 1

print("第",n,"項的斐波那契值為:",fbnq(n))

斐波那契數列就是從第三個元素開始,第n個元素的值就等於(n-1)+(n-2)

的值。找規律也是寫演算法**的必修課。

如有紕漏,請多指教

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...

Python演算法 斐波那契數列

典型的遞迴演算法 快速排序會用到 先做個鋪墊 斐波那契數列即著名的兔子數列 1 1 2 3 5 8 13 21 34 數列特點 該數列從第三項開始,每個數的值為其前兩個數之和,用python實現起來很簡單 定義fibonacci數列如下 非遞迴方法的函式實現 def fibs num result ...

Python斐波那契數列演算法

第一種 函式求裴波那契數列 def func num if n 1 or n 2 如果n等於1或者2 return 1 返回1 else 否則 return func n 1 func n 2 返回函式n 1加上函式n 2的值 print func 12 輸出第12個裴波那契數列的數第二種 用類求裴...