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

来源:互联网 发布:php加密授权 编辑:程序博客网 时间:2024/04/30 03:36
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~

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) -211(2) -211(3) -211(4) 11(1) -411(5) 11(2) 11(1) -611(6) 11(3) 11(2) 11(1) -811(7) 11(4) 11(3) 11(2) 11(1) 11(1) -1211(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 个月以内时,兔子总数为  22. 4 - 7  月时,兔子总数为 (i-2)*23.超过 4 个月时,兔子总数为  A2 + (i-5)*2 【i表示月数】


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

Program

"""File: example11.py:Time:Created on 2016-08-31 23:49:21Author: Sure"""#!/usr/bin/python# -*- coding: UTF-8 -*-import timeprint('当前时间:')print ( time.strftime( '    %Y-%m-%d %H:%M:%S',time.localtime(time.time()) ) )A1 = 1A2 = 1for 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 0
原创粉丝点击