在數學中,斐波那契數列是一個數列,使得數列中的每個數字都是前麵數字的和。級數從0和1開始。本博客將教我們如何使用循環、遞歸和動態編程在Python中創建斐波那契數列。看看這個Python初學者我們為你準備的課程是為了提高你的技能。
萊昂納多·皮薩諾·博戈洛是來自比薩共和國的意大利數學家,被認為是中世紀最有才華的西方數學家。1170年至1250年,他生活在意大利。“斐波納奇”是他的綽號,意思是“波納奇之子”。斐波那契不是第一個知道這個序列的人,幾百年前在印度就已經知道了!
是什麼
斐波納契數列 ?
斐波那契數列是一種數字的模式,每個數字都是由它產生的將最後兩個連續數字相加。前兩個數字以0和1開頭,第三個數字是0+1=1。第四個數字是第二個和第三個數字的相加,即1+1=2,以此類推。
斐波那契數列是一係列的數字:
0、1、1、2、3、5、8、13、21、34……
了解更多Python知識
斐波那契數列的邏輯
下麵的數字是它前麵兩個數字的和。
第三個元素是(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的數組arr到0
- 如果n = 0或1;返回1其他
- 初始化arr[0]和arr[1]為1
- 在[2,num]範圍內運行循環
- 計算arr[I]=arr[I-1] +arr[I-2]
- 數組一直計算到n的序列
因此,解決方案是隻計算一次值,並將其存儲在一個數組中,以便下次需要時可以訪問它.因此,在這種情況下,我們使用動態規劃。實現動態規劃的條件是
1.重疊子問題
2.最優子結構
迭代方法
def fib_iter(n): a=1 b=1 if n= 1:打印('0')elif n==2:打印('0','1')else:打印("迭代方法:",end=' ')打印('0',a,b,end=' ') for i in range(n-3): total =a + b b=a a= total print(total,end=' ') print()返回b fib_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]))返回x x=fib_rec(5) print(x)
動態規劃方法
對迭代方法有一個輕微的修改。我們使用一個額外的數組。def fib_dp(num): arr = [0,1] print("動態規劃方法:",end= ' ') if num==1: print('0') elif num==2: print('[0,','1]') else: while(len(arr)
如果你覺得這個博客有幫助,了解人工智能在你的職業生涯中勇往直前。向業界最優秀的人學習,獲得指導課程和職業援助。
常見問題
斐波那契數列有幾個屬性,包括:
-數列中的每一個數字都是前麵兩個數字的和。
-數列的前兩個數字是0和1。
斐波那契數列有幾個應用,包括:
它可以用來模擬動物種群的增長。
-可以用來計算建築和藝術中使用的黃金比例。
-可用於計算機編程,生成高效的算法。
生成斐波那契數列的時間複雜度為O(n)。
斐波那契數列是一個無限數列,所以空間複雜度是無限的。