斐波那契数列 (递归算法)

问题描述:“假定一对大兔子每月能生一对小兔子,且每对新生的小兔子经过一个月可以长成一对大兔子,具备繁殖能力,如果不发生死亡,且每次均生下一雌一雄,问一年后共有多少对兔子?”

这是前6个月兔子繁殖图
在这里我们注意观察发现,从第三月份起,每个月的兔子数量是它前两个月兔子数量之和。
也就是 :第(i)月的兔子数 = 第 (i -1 ) 月兔子数 + 第 (i - 2)月兔子数。由此我们编写python代码如下。

def digui(mouths):
    """
    这是一个递归问题
    :param mouths:需要求解的月份兔子数
    :return: 返回指定月份的兔子数
    """
    ans = 1
    alist = []
    # 这里是循环终止条件
    if mouths == 1 or mouths ==2:
        return ans
    else:
        mouths = mouths - 1
        return digui(mouths) + digui(mouths - 1)


if __name__ == '__main__':
    number = []
    for i in range(1,15):
        number.append(digui(i))
        print(number[i-1],end='     ')

输出结果如下

1     1     2     3     5     8     13     21     34     55     89     144     233     377     
Process finished with exit code 0

这里实现了前面14个月的输出

谢谢阅读

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值