Ⅰ python實現斐波那契數列的方法以及優化
斐波那契數列 ( 義大利語 :Successione di Fibonacci) 的定義 :
斐波那契數列由0和1開始,之後的每個斐波那契數就是由之前的兩數相加而得出。具體數值如下:
0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610,..............
特別注意 :F(0)代表的是第一個數值,數列下標由0開始。
代碼如上,用了迭代的演算法計算每個數值,每個N值最大運行N-1次循環,演算法比遞歸要高效很多。遞歸代碼如下:
Ⅱ 用python編寫函數計算斐波那契數列的前n項,並將結果存在Fibonacci.txt中,每行5個
defFibonacci(n):
ifn==1:
return1
dic=[-1foriinxrange(n)]
dic[0],dic[1]=1,1
helper(n-1,dic)
linesize=5
file=open('Fibonacci.txt','w')
forloopinrange(len(dic)/linesize):
line=[]
foriinrange(linesize):
line.append(dic[i+linesize*loop])
file.write(" ".join([str(x)forxinline])+" ")
file.close()
defhelper(n,dic):
ifdic[n]<0:
dic[n]=helper(n-1,dic)+helper(n-2,dic)
returndic[n]
Ⅲ python做斐波那契數列。
直接創建一個類然後調用下面的def函數即可
#斐波那契數列
'''
第一位是1
第二位是1
第三位是2
公式位F(n)=f(n-1)+f(n-2)
'''
def get_Fibonacci_sequence(n):
'''輸入n,遍歷到第n位的斐波那契數列'''
a,b=0,1
if n>=3:#即等於>2 相當於1,2位特殊處理
for i in range(n-1):#操作次數是n-1,去除一次第一位的操作
c=a+b
a,b,=b,c
print(b)#這里選擇先改變再輸出,可以減少1次的循環
def get_Fibonacci_Num(n):
'''輸入n,遍歷到第n位的斐波那契數列的第n位數'''
a, b = 0, 1
if n >= 3: # 即等於>2 相當於1,2位特殊處理
for i in range(n - 1): # 操作次數是n-1,去除一次第一位的操作
c = a + b
a, b, = b, c
# 這里選擇先改變再輸出,可以減少1次的循環
return b
def get_Fibonacci_Num_recursion(n):
'''輸入n,遍歷到第n位的斐波那契數列的第n位數,遞歸實現'''
if n==1 or n==2:#特別注意,這里要用邏輯或判斷,不能直接用或判斷,
return 1
else:
return get_Fibonacci_Num_recursion(n-1)+get_Fibonacci_Num_recursion(n-2)
get_Fibonacci_sequence(11)
print(get_Fibonacci_Num(11))
print(get_Fibonacci_Num_recursion(11))
Ⅳ 斐波那契數列用python怎麼表示
斐波那契數列指的是這樣一個數列 0, 1, 1, 2, 3, 5, 8, 13,特別指出:第0項是0,第1項是第一個1。從第三項開始,每一項都等於前兩項之和。
Python 實現斐波那契數列代碼如下:
#-*-coding:UTF-8-*-
#Filename:test.py
#authorby:www.runoob.com
#Python斐波那契數列實現
#獲取用戶輸入數據
nterms=int(input("你需要幾項?"))
#第一和第二項
n1=0
n2=1
count=2
#判斷輸入的值是否合法
ifnterms<=0:
print("請輸入一個正整數。")
elifnterms==1:
print("斐波那契數列:")
print(n1)
else:
print("斐波那契數列:")
print(n1,",",n2,end=",")
whilecount<nterms:
nth=n1+n2
print(nth,end=",")
#更新值
n1=n2
n2=nth
count+=1
執行以上代碼輸出結果為:
你需要幾項? 10
斐波那契數列:
0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 ,