""" 1、生成100项斐波那契数列 2、求第n项斐波那契数列的值是多少 3、给定终止值,生成此前斐波那契数列 """ # 求第n项斐波那契数列的值是多少 def Fibonacci(n): if n == 1: # 如果n=1,返回0 return 0 elif n == 2: # 如果n=2,返回1 return 1 else: return Fibonacci(n-1) + Fibonacci(n-2) # 通项公式 F(N) = F(N-1) + F(N-2) # 生成前n项斐波那契数列 def Fibonaccii(n): seq = [0,1] # 初始化列表 if n == 1: # n=1,返回[0] return [0] elif n == 2: # n=2,返回[0,1] return [0,1] else: for i in range(n-2): # n>2,循环添加数列到初始列表中 seq.append(seq[i]+seq[i+1]) return seq # 给定终止值,生成此前斐波那契数列 def Fibonacciii(n): seq = [0,1] # 初始化列表 i = 0 # 初始i if n == 0: # 如果n=0,返回列表[0] return [0] else: if n <= 3: # 如果0<n<3 for i in range(n): # 循环往初始列表中添加斐波那契数列 seq.append(seq[i]+seq[i+1]) return seq else: # 如果n > 3 while True: # 理论上当n 不确定时,需要添加的项数也是不确定的,故死循环 if seq[-1] <= n: # 一直添加,如果添加的最后一项不大于给定值 seq.append(seq[i]+seq[i+1]) i += 1 # 每次循环i 递增 continue # 继续循环,不执行以下代码 break # 当最后一项大于给定值时,跳出死循环 return seq[0:-1] # 最后返回去掉最后一个数值的斐波那契数列 # 求第n项斐波那契数列的值是多少(快速版) def Fibonaccii(n): seq = [0,1] # 初始列表怕[0,1] if n == 1: # 如果n=1,返回[0] return [0] elif n == 2: # 如果n=2,返回[0,1] return [0,1] else: for i in range(n-2): # 循环往列表中添加数列,初始已有两项故添加项数为n-2 seq.append(seq[i]+seq[i+1]) # 添加的数列值等于前两项的和 return seq[-1] # 取最后一项的值 # 求第n项斐波那契数列的值是多少(终极版) def Fibonaccii(n): a,b = 1,1 if n == 1 or n == 2: return 1 for i in range(n-2): s = a + b a,b = b,s return s # 老男孩版本 def Fibonacciiii(arg1,arg2,stop): if arg1 == 0: print(arg1) print(arg2) arg3 = arg1 + arg2 print(arg3) if arg3 < stop: Fibonacciiii(arg2,arg3,stop) Fibonacciiii(0,1,1000)