一、斐波那契数列

首先,我们来了解一下斐波那契,斐波那契的发明者是意大利数学家昂纳多·斐波那契

我们拿兔子繁殖的例子来学习斐波那契~

课时23 递归:这帮小兔崽子

数据统计表如下图所示:

课时23 递归:这帮小兔崽子

迭代实现:

def fab(n):
    n1 = 1
    n2 = 1
    n3 = 1

    if n < 1:
        print('输入有误!')
        return -1

    while (n-2) > 0:
        n3 = n1 + n2
        n1=n2
        n2=n3
        n -= 1

    return n3
result = fab(35)
if result != -1:
    print('总共有%d对小兔崽子诞生!'% result)

递归实现:

def fab(n):
    if n < 1:
        print('输入有误!')
        return -1

    if n == 1 or n == 2:
        return -1

    else:
        return fab(n-1) + fab(n-2) 


result = fab(20)
if result != -1:
    print('总共有%d队小兔崽子诞生!'% result)

来看一下上面递归实现的原理:

课时23 递归:这帮小兔崽子

注意一点,递归如果使用不当,效率会很低。我们将上面例子中的fab()参数变大一点,会发现:用迭代代码实现基本是毫秒级的,而用递归实现就要考验计算机的CPU能力了(N秒~N分钟不等),座椅不支持大家所有问题都是用递归来解决

相关文章: