MegaMU个人站

欢迎光临

落日黄沙 白帆秋水 你可知谁的记忆在时空里飞?


10行代码写斐波那契数列

目录

思路

斐波那契数列,每一项都是前两项的和
定义a为当前项,b为此项与前一项的和即当前项的下一项。
每当next()时,输出当前的a,之后使用a=b ,b =a+b

使用迭代器,15行完成斐波那契数列

class Fibnacci(object):     # 创建迭代器
    def __init__(self,num):  
        self.num , self.index , self.a , self.b =num , 0 ,1 ,1 # 指定生成的项数 ,记录下标,初始a,初始b  
    def __iter__(self):  
        return self         # 使可迭代对象本身也是迭代器
    def __next__(self): # 判断下标是否越界   
        if self.index < self.num:  # 计算,保存a的值,下标加一           
            data , self.a , self.b = self.a , self.b , self.a+self.b 
            self.index +=1
            return data          
        else: raise StopIteration   # 抛出异常
if __name__ == "__main__":
    try: fib_iterator = Fibnacci(int(input("请输入Fibnacci数列项数:")))    # 创建迭代器对象
    except: print("参数错误!")
    for i in fib_iterator: print(i)

使用生成器,10行完成斐波那契数列

def fibonacci(num): # 创建生成器
    a , b , index = 1 ,1 ,0 # 初始a,初始b,记录下标  
    while index < num: # 判断下标是否越界 
        data , a , b = a , b , a+b # 计算,保存a的值
        index +=1 # 下标加一
        yield data
if __name__ == "__main__": 
    try: fib = fibonacci(int(input("请输入Fibonacci数列项数:"))) # 创建生成器对象
    except: print("参数错误!")
    for i in fib: print(i)

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦