首页 > 编程 > Python > 正文

python3实现斐波那契数列(4种方法)

2019-11-25 12:22:19
字体:
来源:转载
供稿:网友

基础版(list方法)

# 比较占内存w = int(input("输入一个数字还你一个斐波那契数列:"))list_res = []def list_n(n):  if n>=3:    res=list_n(n-1)+list_n(n-2)  else:    res=1  return resprint("开始")for i in range(0,w):  list_res.append(list_n(i+1))print(list_res)

升级版

# 比较占内存num =int(input("输入一个数字还你一个斐波那契数列v2.0:"))list_nums=[1,1]def calculate(num,list_nums):  i = 0  if num>2:    while i < num:      list_nums.insert(i+2,list_nums[i]+list_nums[i+1])      i+=1    else:      print("数列已生成")      print(list_nums)    return list_nums[num-1]  else:    return list_nums[0]res = calculate(num,list_nums)print("="*50)print("第%s个:%s"%(num,res))

最实用版(解包的方式)

#省内存def fbnq(n):  a,b=1,1  if n==1 or n ==2:    return 1  else:    i=3    while i<=n:      a,b=b,a+b      i+=1    return bprint(fbnq(int(input("输入一个数:"))))

迭代器版

"""实现斐波那契数列"""class feibo(object):  def __init__(self, length):    self.num1 = 0    self.num2 = 1    self.num = self.num1    self.length = length    self.index = 0  def __iter__(self):    return self  def __next__(self):    self.num = self.num1    while True:      if self.index == self.length:        raise StopIteration      self.num1, self.num2 = self.num2, self.num1+self.num2      self.index += 1      return self.nummyfbnq = feibo(10)# print(list(myfbnq))  # 指针位置已到最后一位for i in myfbnq:  print(i)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表