推理過程(公司筆試面試型別題)(斐波那契數列)
第乙個月: 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個裴波那契數列的數第二種 用類求裴...