背景:
小伙伴去面试,考题:python计算"斐波那契数列",不少于2种写法。
当然,小编第一感觉,就是坑。逗比考官,没办法,谁让发到群里让帮忙的呢。实现代码如下:
斐波那契数列百度一下:
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
正常逻辑:
# Author: lixy num = int(input("输入一个整数:")) a = 0 b = 1 if num <= 0: print("请输入一个正整数!") elif num == 1: print("斐波拉契数列:%d" % a) else: print("斐波拉契数列:", end=" ") print(a,b,end=" ") for i in range(1, num-1): c = a + b a,b=b,c print(c,end=" ")
方法二:
L = [0,1] num = int(input("请输入你要的项数:")) if(num <= 0): print("请输入一个正整数!"); elif(num <= 2): if(num == 1): print("数列是:0") else: print("数列是:0,1") else: for i in range(2,num): f = L[i-1] + L[i-2] L.append(f) print("数组是:") print(L)
最后使用生成器的方法:
# python 用生成器生成斐波那契数列 def PeiBo(): a = 0 b = 1 print(a, end=" ") while True: c = a + b a, b = b, c yield a pei = PeiBo() for x in pei: if x > 100: break print(x, end=" ")
结果展示:
最后:遇到这种,我估计直接出门左转了..