#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)