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

@斐波那契数列

  • 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

你可能感兴趣的:(Python,语言程序设计,Python语言程序设计)