斐波那契数列:python实现

#fibonacci
#第1个数为0,第2个数为1,后面数为前面2个数合

def fibonacci(num):
    #第1个数和第2个数固定,是0和1,故定义2个变量赋值为0与1
    first = 0
    second = 1
    
    #定义索引变量,目的是循环退出条件,赋值为0
    index = 0
    #定义while循环
    while index < num :
        #定义结果输出变量,由于第1个数是固定,故首先把first变量赋值给res变量,即第1次内容为firest值为0
        res = first
        #第1次循环输出0后,那第二次输出应该就是第2个值
        #如何能输出第2个值,我们假设有2个值,想输出第2个值,我们可以通过交换位置即第2位和第1位的        
        #位置交换,故 first,second = second,first即可     
        #假设有3个值,大家会发现第3个值又变成了0,因为位置又交换过来了,我们的目的是前2个数的和,
        #故我们可以把second变成first+second就可以实现
        first,second= first+second,first
        #自增1,每次循环索引加1,循环退出条件,必填,否则循环不退出变成死循环
        index +=1
        print(res)


fibonacci(10)

使用yield生成器实现:生成器每次调用只生成一个数据,可以节省大量的内存。

def fibonacci(num):
    first = 0
    second = 1
    index = 0

    while index < num :
        res = first
        first,second= first+second,first
        # first, second =  second, first
        index +=1
        # print(res)
        #使用yield把当前函数变成生成器
        yield(res)

#创建生成器
result = fibonacci(3)
#循环打印
for i in result:
    print(i)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值