python从前有一对兔子,【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个月以后又会循环第一步

所以有如下规律总结:

..

...

兔子总数的规律总结如下:

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值