在數學中,斐波那契數列是一個數列,數列中的每一個數都是前麵數的和。這個級數從0和1開始。通過本博客的課程,我們將學習如何使用循環、遞歸和動態規劃在Python中創建斐波那契數列。
- 什麼是斐波那契數列
- 斐波納契數列的邏輯
- 斐波納契數列的公式
- 斐波那契螺旋
- 斐波納契數列算法
- Python中的斐波那契數列
一個。斐波那契數列使用循環
b。使用遞歸的斐波那契級數
c。利用動態規劃的斐波那契級數
列奧納多·皮薩諾·波哥洛是來自比薩共和國的意大利數學家,被認為是中世紀最有才華的西方數學家。1170年至1250年,他生活在意大利。“斐波那契”是他的綽號,大致意思是“波那契之子”。菲波納奇不是第一個知道這個序列的人,它在印度幾百年前就已經知道了!
是什麼
斐波納契數列 ?
斐波那契數列是一種數字模式,其中每個數字都是前兩個連續數字相加的結果.前兩個數字以0和1開頭。數列中的第三個數字是0+1=1。第4個數是第2個數和第3個數的相加,即1+1=2,以此類推。
斐波那契數列是一串數字:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,…
斐波那契數列的邏輯
下一個數是前兩個數的和。
第三個元素是(1+0)= 1
第四個元素是(1+1)= 2
第5元素是(2+1)= 3
斐波納契數列的公式
因此,級數的計算公式為:
xn= xn - 1+ xn -;在哪裏
xn是項數n
xn - 1是前一項(n-1)
xn -這一項在前麵嗎
斐波那契螺旋
關於這些數字的一個有趣的性質是當我們用這些寬度做正方形時,我們會得到一個螺旋。一個斐波那契螺旋一個四分之一圓的圖案是否與一塊正方形內部相連斐波那契數字寫在每個方塊上。寫在大方框裏的數是後麵兩個小方框的和。這是一個完美的安排,每個塊表示比前兩個塊更高的數字。其主要思想來源於對數模式,它看起來也很相似。這些數字也與黃金分割率有關。
學習如何找到如果字符串在Python中是回文
斐波納契數列算法
迭代方法
- 初始化變量a,b為1
- 在範圍[1,n) # n exclusive中初始化for循環
- 計算數列中的下一個數;總= a + b
- 將以前的值存儲在b中
- 將總數存儲在
遞歸方法
- 如果n等於1或0;返回1
- 否則返回fib(n-1) + fib(n-2)
動態規劃方法
- 初始化一個大小為n到0的數組arr
- 如果n等於0或1;其他返回1
- 將arr[0]和arr[1]初始化為1
- 在[2,num]範圍內運行for循環
- 計算arr[I]=arr[I-1] +arr[I-2]
- 該數組一直計算到n
因此,解決方案是計算一次該值,並將其存儲在一個數組中,下次需要該值時可以從該數組訪問該值.因此,我們在這種情況下使用動態規劃。實現動態規劃的條件是
1.重疊子問題
2.最優子結構
迭代方法
def fi_iter (n): a=1 b=1 if n==1: print('0','1') elif n==2: print('0','1') else: print("Iterative Approach: ", end=' ') print('0',a,b,end=' ') for i in range(n-3): total =a + b b=a a= total print(total,end=' ') print()返回b fi_iter (5)
遞歸方法
Def fib_rec(n): if n == 1:返回[0]elif n == 2:返回[0,1]else: x=fib_rec(n-1) #新元素最後兩個元素的和x.append(sum(x[:-3:-1]) return x x=fib_rec(5) print(x)
動態規劃方法
迭代方法有一個輕微的修改。我們使用一個額外的數組。def fib_dp(num): arr = [0,1] print("Dynamic Programming Approach: ",end= ' ') if num==1: print('[0,','1]') else: while(len(arr)
如果你覺得這個博客有幫助,學習人工智能並在你的職業生涯中繼續前進。向行業內最好的人學習,還可以獲得導師會議和職業援助。