Four Methods of Realizing Fibonacci Sequence of by python3

  • 2021-07-18 08:37:26
  • OfStack

Basic version (list method)


#  Compare memory occupied 
w = int(input(" Input 1 Give you back a number 1 Fibonacci sequence: "))
list_res = []
def list_n(n):
  if n>=3:
    res=list_n(n-1)+list_n(n-2)
  else:
    res=1
  return res

print(" Begin ")

for i in range(0,w):
  list_res.append(list_n(i+1))
print(list_res)

Upgraded version


#  Compare memory occupied 
num =int(input(" Input 1 Give you back a number 1 Fibonacci sequence 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(" Sequence has been generated ")
      print(list_nums)
    return list_nums[num-1]
  else:
    return list_nums[0]

res = calculate(num,list_nums)
print("="*50)
print(" No. 1 %s A :%s"%(num,res))

The most practical version (the way to unpack)


# Save memory 
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 b

print(fbnq(int(input(" Input 1 Number: "))))

Iterator version


""" Realize Fibonacci sequence """


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.num


myfbnq = feibo(10)
# print(list(myfbnq))  #  Pointer position has reached the end 1 Bit 
for i in myfbnq:
  print(i)


Related articles: