python斐波拉函数 python斐波拉数列

用python编写函数计算斐波那契数列的前n项,并将结果存在Fibonacci.txt中,每行5个def Fibonacci(n):
if n == 1:
return 1
dic = [-1 for i in xrange(n)]
dic[0], dic[1] = 1, 1
helper(n-1, dic)
linesize = 5
file=open('Fibonacci.txt', 'w')
for loop in range(len(dic)/linesize):
line = []
for i in range(linesize):
line.append(dic[ilinesize * loop])
file.write("\t".join([str(x) for x in line])"\n")
file.close()
def helper(n, dic):
if dic[n]0:
dic[n] = helper(n-1, dic) helper(n-2, dic)
return dic[n]
用python函数写斐波那契数列是什么?斐波那契数列指python斐波拉函数的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0python斐波拉函数,第1项是第一个1 。从第三项开始,每一项都等于前两项之和 。
# 判断输入python斐波拉函数的值是否合法
if nterms = 0:
print("请输入一个正整数 。")
elif nterms == 1:
print("斐波那契数列:")
print(n1)
else:
print("斐波那契数列:")
print(n1,",",n2,end=" , ")
while countnterms:
nth = n1n2
print(nth,end=" , ")
# 更新值
n1 = n2
n2 = nth
count= 1
平方与前后项
从第二项开始(构成一个新数列,第一项为1,第二项为2,……),每个偶数项的平方都比前后两项之积多1,每个奇数项的平方都比前后两项之积少1 。如:第二项 1 的平方比它的前一项 1 和它的后一项 2 的积 2 少 1 , 第三项 2 的平方比它的前一项 1 和它的后一项 3 的积 3 多 1 。
请编写Python程序完成以下要求:编写函数,求斐波那契数列第n项的值,F0=1,F1=1?def Fibonacci(n):
f0=0
f1=1
s=[]
s.append(f0)
s.append(f1)
for i in range(1,n 1):
s.append(s[i-1] s[i])
return s[n]
利用递归函数求斐波那契值python版首先我们要了解一下什么是递归 。
递归法 , 递归法就是利用上一个或者上几个状态来求取当前状态的值(个人看法) 。也可以说成函数自己调用自己的一种解决问题的策略 。因此递归法通常是依托函数来实现的 , 递归函数总是会有一个出口 , 我们在解决递归问题时,只需要找出递归的关系式以及递归函数的出口(这两个可以说是递归函数的核心了) 。下面我将在这里举求斐波那契值的例子带领着大家具体的实践一下递归法 。
很显然递归函数的递推式是:fib(n) = fib(n-1) fib(n-2) 。
递归函数的出口是当n为1时返回1,当n为0时返回0 。
最后递归函数的核心代码就可以写出了:
然后总的代码就是:
具体思路如下:
语句 return fib(n-1) fib(n-2)的意思就是向前求斐波那契值,直到n-1=1,n-2=0
因为只有第1个和第0个斐波那契值是确定的
例:
当n=3时
第一次调用函数fib会执行第三条语句(因为n1)这样求回返回fib(2) fib(1)
第二次调用函数时,因为21所有会返回fib(1) fib(0);因为1不大于1,所以调用函数时
会执行第二条语句返回1值 。
第三次调用函数,会执行第一和第二条语句 , 依次返回0和1从而求得fib(2)
fib(3)=fib(2) fib(1)
fib(2)=fib(1) fib(0)
即fib(3)=fib(1) fib(0) fib(1)=2*fib(1) fib(0)
python递归求斐波那契数列前10项你好,很高兴为你解答 。根据斐波那契数列F(n)=F(n-1) F(n-2),当n=1和n=2时 , F(n)=1,可以利用函数 if分支结构编写递归程序,求出斐波那契数列前10项 。具体代码如下:
求斐波那契数列前10项
(python编程)使用函数输出斐波那契数列:[-1, -1, -2, -3, -5, -8, -13, -21, -34, -55](添加到列表)?你看看你递归代码的复杂度 是O(2^n) 而第二个的复杂度是O(n) 运行效率当然不同COUNTER = 0
def fibn(n):
global COUNTER
COUNTER= 1
if n == 0:
return 1
elif n == 1:
return 1
else:
return fibn(n-1)fibn(n-2)
statistics = []
for i in range(35):
COUNTER = 0
fibn(i1)
statistics.append(((i1), COUNTER))
print statistics[(1, 1), (2, 3), (3, 5), (4, 9), (5, 15), (6, 25), (7, 41), (8, 67), (9, 109), (10, 177), (11, 287), (12, 465), (13, 753), (14, 1219), (15, 1973), (16, 3193), (17, 5167), (18, 8361), (19, 13529), (20, 21891), (21, 35421), (22, 57313), (23, 92735), (24, 150049), (25, 242785), (26, 392835), (27, 635621), (28, 1028457), (29, 1664079), (30, 2692537), (31, 4356617), (32, 7049155), (33, 11405773), (34, 18454929), (35, 29860703)]做了一个简单的proflieimport cProfile
import pstats
def fibn(n):
if n == 0:
return 1
elif n == 1:
return 1
else:
return fibn(n-1)fibn(n-2)
print 'i,calls, time'
for i in range(50):
pr = cProfile.Profile()
pr.enable()
fibn(i)
pr.disable()
stats = pstats.Stats(pr)
stats.strip_dirs()
st = stats.stats[('test1.py', 3, 'fibn')]
print '=, d, ? % (i, st[1], st[3])
i,calls, time0,1, 0.0000001,1, 0.0000012,3, 0.0000033,5, 0.0000054,9, 0.0000085,15, 0.0000126,25, 0.0000207,41, 0.0000338,67, 0.0001659,109, 0.000088 10,177, 0.000141 11,287, 0.000228 12,465, 0.000450 13,753, 0.000601 14,1219, 0.001016 15,1973, 0.003561 16,3193, 0.002593 17,5167, 0.004372 18,8361, 0.007097 19,13529, 0.011073 20,21891, 0.018552 21,35421, 0.032467 22,57313, 0.051762 23,92735, 0.095383 24,150049, 0.133490 25,242785, 0.212390 26,392835, 0.352861 27,635621, 0.578204 28,1028457, 0.987839 29,1664079, 1.506812 30,2692537, 2.682802 31,4356617, 3.998936 32,7049155, 8.089419 33,11405773, 13.058235 34,18454929, 23.930004 35,29860703, 36.503880目测fibn(50)要算出来需要两周
【python斐波拉函数 python斐波拉数列】python斐波拉函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python斐波拉数列、python斐波拉函数的信息别忘了在本站进行查找喔 。

    推荐阅读