python笔记:fib
程序员文章站
2022-05-30 22:50:24
def my_fib_1(n): #打印比n小的斐波那契数列中的数字 ls = [] a = 0 b = 1 while b <= n: # 这样能保证拿到的都是小于n的 ls.append(b) a,b = b,a+b # ls.append(b)如果放到这,那么拿到的最后一个就是大于n的了 return lsdef my_fib_2(n): #打印n个斐波那契数列中的数字...
def my_fib_1(n):
#打印比n小的斐波那契数列中的数字
ls = []
a = 0
b = 1
while b <= n:
# 这样能保证拿到的都是小于n的
ls.append(b)
a,b = b,a+b
# ls.append(b)如果放到这,那么拿到的最后一个就是大于n的了
return ls
def my_fib_2(n):
#打印n个斐波那契数列中的数字
i,num1,num2 = 1,1,1
ls = []
while i <= n:
# 这样能保证拿到的都是小于n的
ls.append(num1)
num1,num2 = num2,num1+num2
# ls.append(b)如果放到这,那么拿到的最后一个就是大于n的了
i=i+1
return ls
# 用列表搞定
def my_fib_3(n):
ls = []
for i in range(n):
if i==0 or i==1:
ls.append(1)
else:
ls.append(ls[i-2]+ls[i-1])
return ls
# 递归函数,只是返回第n个数
def my_fib_4(n):
if (n==1) or (n==2):
return 1
else:
return my_fib_4(n-2)+ my_fib_4(n-1)
#也可以存储到列表里输出,根据具体需求决定
#使用生成器来实现
def my_fib_5(n):
i,num1,num2 = 1,1,1
while i<=n:
yield num1
num1,num2 = num2,num1+num2
i=i+1
#终极boss,生成器的升级版本
def my_fib_6(n):
a,b = 0,1
while n>0:
a,b = b,a+b
n -=1
yield a
if __name__ == "__main__":
print(my_fib_1(100))
print(my_fib_2(10))
print(my_fib_3(10))
print(my_fib_4(10))
print([i for i in my_fib_5(10)])
print([i for i in my_fib_6(10)])
本文地址:https://blog.csdn.net/JCLWIN2017/article/details/107368047