经典兔子问题python(头歌教学实践平台)

第1关:经典兔子问题——递归

任务描述

问题:有一对兔子,从出生后的第三个月起,每个月都生一对兔子,小兔子再长三个月后每个月又生一对兔子!假如兔子都不死,请问每个月的兔子的数量是多少对? 本关任务:编写程序求解上面的问题。

相关知识

兔子问题的分析

假设第一个月有一对出生的兔子,在第二月是成长期不生兔子,在第三个月开始生小兔一对,第四个第一个月的一对兔子持续生一对小兔第三个月生的小兔还在成长期,一次类推:

 

我们看出来,假设在第n个月(n>2),则n-2月的兔子全部成熟可以在第n个月生产小兔,n-1月新生的小兔在n月仍处于成长期不能生小兔,所以在第n个月新生小兔数量就是n-2月的兔子数,再加上n-1月兔子的基数(非新生的兔子)就是第n个月的兔子数量,即F(n)=F(n-1)+F(n)

兔子问题的代码编程

通过对问题分析后,经典兔子就转化成了递归问题,第1个月只有1对新生兔,使用F(1)=1表示,第二个月有1对兔子,使用F(2)=1表示,第三个月F(3)=F(1)+F(2),其中F(1)表示在第3个月新生兔对数,F(2)表示非新生兔,那么就可以转化成了递归问题:

  1. def rabbit(m):
  2. """
  3. m:月份
  4. return:第m月兔子对数
  5. """
  6. if (m ==1) | (m==2):
  7. return 1
  8. else:
  9. #请在下面的空白处补充完成代码,第m个月有多少对兔子
  10. ########### Begin ##########
  11. ########### Begin ##########

编程要求

根据提示,首先点击右边代码文件,按要求补充完整代码,然后点击图形化窗口进入可视化界面,点击测试。

测试说明

点击右下角测评后,再返回到图形化窗口。 等待排序窗口出现,点击开始排序查看排序过程。 排序完成后,在600s内点击 exit,使界面关闭,即可进行测评。 若执行成功,说明成功通关。

开始你的任务吧,祝你成功!

# -*- coding:utf8 -*-
def rabbit(m):
    """
    m:月份
    return:第m月兔子对数
   """
    # 请在下面的空白处补充完成代码,第m个月有多少对兔子
    ########### Begin ##########
    if m<=2:
        return 1
    else:
        return rabbit(m-1)+rabbit(m-2)

    ########### Begin ##########

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值