【Python】以不定条件下兔子总数计算为例-Python中对数量规律问题的思考与延展

~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~

Examination Problem

       看过前面文章的网友会发现,此题似乎在前面已经写过,并且在另一节素数筛选,博主还为了探寻一下不同语言的编程效率问题,特意列举了多种语言如C/C++/Python/Java/Php/C#/Pascal/Javascript/Go/,发现语言之间存在一种联系,那就是思考的方式是一样的,只不过表达的形式不同。

       先把原题挂出来:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假如兔子都不死,问前24个月每个月的兔子总数为多少? 【其实这道题就是分析问题然后发现数列之间存在的fibonacci关系,但是不妨扩展一下思路,修改一下假设条件努力向实际情况靠拢进行数学建模,兔子是有寿命的,寿命符合一定的函数分布{这里就不深入讨论},兔子生小兔子的时间倒是基本固定,这个所以这个可以假设,一旦模型建立,只需要修改数字即可,下面我们就做一点小思考,假如第4个月才生小兔子呢,很明显此时不再满足fibonacci关系,那么我们又该解决问题呢?】

       so,挂出new problem,有一对兔子,从出生后第4个月起每个月都生一对兔子,小兔子长到第4个月后每个月又生一对兔子,假如兔子都不死,问前24个月每个月的兔子总数为多少? 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Analysis

  • 首先我们先手写列出兔子数量规律,最原始也最有效:
  • '''
    问题分析:
    11(1) -2
    11(2) -2
    11(3) -2
    11(4) 11(1) -4
    11(5) 11(2) 11(1) -6
    11(6) 11(3) 11(2) 11(1) -8
    11(7) 11(4) 11(3) 11(2) 11(1) 11(1) -12
    11(8) 11(5) 11(4) 11(3) 11(2) 11(1) 11(1) 11(1) -16
    ...
     c
  • 好,观察完上式我们总结一下:
  •             1.以每4个月为一次界,凡是活过了4个月的兔子往后每个月都会生出小兔子
  •             2.以新出生的小兔子在过了4个月以后又会循环第一步
  • 所以有如下规律总结:
  • ..<pre name="code" class="python">...
    兔子总数的规律总结如下:
    1. 4 个月以内时,兔子总数为  2
    2. 4 - 7  月时,兔子总数为 (i-2)*2
    3.超过 4 个月时,兔子总数为  A2 + (i-5)*2 【i表示月数】


     

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Program

"""
File: example11.py:
Time:Created on 2016-08-31 23:49:21
Author: Sure
"""

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time
print('当前时间:')
print ( time.strftime( '    %Y-%m-%d %H:%M:%S',time.localtime(time.time()) ) )

A1 = 1
A2 = 1
for i in range(1 , 25):
    if i < 4:
        print("第 %d 月,兔子总数为%10d" %(i,A1+A2) )
    elif 3 < i < 7:
        A2 = (i-2)*2
        print("第 %d 月,兔子总数为%10d" %(i,A2))
    else:
        A2 = A2 + (i-5)*2
        print('第 %d 月,兔子总数为%10d' %(i, A2) )

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Results

当前时间:
    2016-09-03 16:55:38
第 1 月,兔子总数为         2
第 2 月,兔子总数为         2
第 3 月,兔子总数为         2
第 4 月,兔子总数为         4
第 5 月,兔子总数为         6
第 6 月,兔子总数为         8
第 7 月,兔子总数为        12
第 8 月,兔子总数为        18
第 9 月,兔子总数为        26
第 10 月,兔子总数为        36
第 11 月,兔子总数为        48
第 12 月,兔子总数为        62
第 13 月,兔子总数为        78
第 14 月,兔子总数为        96
第 15 月,兔子总数为       116
第 16 月,兔子总数为       138
第 17 月,兔子总数为       162
第 18 月,兔子总数为       188
第 19 月,兔子总数为       216
第 20 月,兔子总数为       246
第 21 月,兔子总数为       278
第 22 月,兔子总数为       312
第 23 月,兔子总数为       348
第 24 月,兔子总数为       386



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值