Python札记18_斐波那契函数(更新)

浏览: 818

斐波那契函数起源于对斐波那契数列的实现,斐波那契数列为:
a[0] = 0 (n=0)
a[1] = 1 (n=1)
a[n] = a[n-1] + a[n-2] (n>=2)

本篇文章将会从各个方法实现斐波那契数列

  • 方法1
def fibs(n):
list1 = [0,1]
for i in range(n-2):
list1.append(list1[-2]+list1[-1])
return list1

if __name__ == "__main__":
result = fibs(10)
print(result)

image.png

理解

  • 先定义一个初始列表[0,1],用于存放数据
  • list.append(x)方法的理解:将参数x存放在列表list的最后面
  • list1.append(list1[-2]+list1[-1]):表示将倒数末尾两个元素相加,再追加到list1末尾
  • 通过n-2次遍历,获取所有的数据
  • 过程如下:末尾两个元素相加,再放到末尾,反复循环

image.png

方法2

def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2) # 两个函数调用fib()函数本身

if __name__ == "__main__":
result = fib(4)

方法3

m = {0:0, 1:1}  # 初始化两个最初的值

def fib(n):
if not n in m.keys(): # 判断n是否在m的键中
m[n] = fib(n-1) + fib(n-2)
return m[n]

if __name__ == "__main__":
f = fib(5)

一行代码解决

print([x[0] for x in [(a[i][0], a.append([a[i][1], a[i][0]+a[i][1]])) for a in ([[1, 1]], ) for i 
推荐 0
本文由 皮大大 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册