您的位置:首页 > 编程语言 > Python开发

13.3Python基础拾遗(3):斐波那契数列的递归、非递归、生成器实现

2018-03-20 22:35 1036 查看
@斐波那契数列

fibonacci数列的前几项是这样的:0,1,1,2,3,5,8…;

即从第三项开始的每一项,等于前面两项之和;

通过令程序和设备求fibonacci数列的某一高位项,是运算力测试的一个经典问题;

@求fibonacci的第N项:非递归实现

# 0,1,1,2,3,5,8...
# 求斐波那契数列第N项非递归实现
def getFibonacci(n):
a = 0
b = 1

for i in range(n):

# 把b和temp分别赋值给a和b(也只有Python才能这么任性!)
a, b = b, a+b

return a


@求fibonacci的第N项:递归实现

# 0,1,1,2,3,5,8...
# 求斐波那契数列第N项递归实现
def getFibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1

# 递归求取前两项的值
# 递归的终止条件就是n等于0或1
else:
return getFibonacci(n - 1) + getFibonacci(n - 2)


@斐波那契数列生成器

# 连续生成n个斐波那契数
def  fibonacciGenerator(n):
a = 0
b = 1

for i in range(n):
if i > 0:
# 把b和temp分别赋值给a和b
a, b = b, a+b

# 当i==0时,a为0,i==1时,a为1...
yield a


从fibonacciGenerator中分批索取数据

fg = fibonacciGenerator(6)

# 迭代器的简易遍历
# for item in fg:
#     print(item)
#     time.sleep(1)

# 迭代器轮询
while True:
try:
print(next(fg))
except StopIteration:
break
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: