python实现返回指定下标位置的 斐波那契数列[1,1,2,3,5,8,13,21,34....n] 数值
方式一、递归实现,相对复杂,性能不行但能出数据,最大下标只能到994
def fbnq(idx):if idx == 1:return 1else:return ff(idx, 0, 1)[3]def ff(idx, last, curt):if idx == 1:return idx, last, curt, curtelse:idx -= 1return ff(idx, curt, last + curt)print(fbnq(994))
方式二、递归实现,代码简洁,性能差,传入数值到100就嘎了,不推荐
def fbnq2(n):if n <= 2:return 1else:return fbnq2(n - 2) + fbnq2(n - 1)print(fbnq2(10))
方式三、列表实现,容易理解,列表会占用内存,性能一般
def fbl(idx):jl = [1, 1]if idx <= 0:return 0elif idx <= 2:return jl[idx - 1]else:for i in range(2, idx):jl.append(jl[i - 2] + jl[i - 1])return jl.pop()print(fbl(100))
方式四、列表实现,方式三的升级,理解需要一定的逻辑思维,性能一般
def fbl2(idx):jl = [1, 1]if idx <= 0:return 0elif idx <= 2:return jl[idx - 1]else:for i in range(2, idx):jl[i % 2] = jl[0] + jl[1]return max(jl)print(fbl2(100))
方式五、网上学的,代码简洁,性能优秀,推荐使用
def fbl3(n):a, b = 0, 1for i in range(n):a, b = b, a + breturn aprint(fbl3(1000))
各位道友有其他好的方式发出来一起学习。ღ( ´・ᴗ・` )比心