基因牛
2016-02-14 19:25
423 查看
/* 张教授采用基因干预技术成功培养出一头母牛,三年后,这头母牛每年会生出1头母牛, 生出来的母牛三年后,又可以每年生出一头母牛。如此循环下去,请问张教授n年后有多少头母牛? */
import java.util.ArrayList; import java.util.List; class Cow{ private int age; public Cow afterYear(){ age++; return age > 2 ? new Cow() : null; // 填空 } public static void showTotalCowNum(int n){ List<Cow> list = new ArrayList<Cow>(); list.add(new Cow()); for (int i = 0; i < n; i++) { int cowCount = list.size(); for (int j = 0; j < cowCount; j++){ Cow cow = list.get(j).afterYear(); if (cow != null){ cow.afterYear(); // 填空 list.add(cow); } } } System.out.println(n + "年后,共有:" + list.size()); } } class Demo05{ public static void main(String[] args){ Cow.showTotalCowNum(13); } }
/* 若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有多少头母牛? */
问题应该是一样的吧
第一年:1 第二年:1 第三年:1 第四年:1 + 1(4) 第五年:1 + 1(4) + 1(5) 第六年:1 + 1(4) + 1(5) + 1(6) 第七年:1 + 1(4) + 1(5) + 1(6) + 1(7) +1(47)
递归公式:f(n)=1 0<n<4
f(n)=f(n-3)+f(n-1) n>3
<pre id="best-content-1079378233" class="best-text mb-10" name="code" style="white-space: pre-wrap; word-wrap: break-word;">解释还是很简单的,先明确f(n)的含义,第n年有的牛数
第一个公式,不用多说,第零年(开始),第一年,第二年,第三年,都只有1头牛
第四年后,牛的数量由两部分构成,去年的所有牛和所生下的小牛组成,前者就是f(n-1),应该没有异义;由于不是所有牛都能生小牛,只有3牛以前的老牛才会生小牛,而每只老牛只生一只小牛,第n年所生牛的数量就应该是f(n-3)
相关文章推荐
- Protocol Framework - SNMP Tutorial
- 阶段小项目1:循环间隔1秒lcd显示红绿蓝
- IOS之nil、Nil、NSULL、NULL之间的区别
- Architectural Model - SNMP Tutorial
- 75. Sort Colors LeetCode
- 2879: [Noi2012]美食节
- 解决npm安装某些工具过慢问题
- Level Of Management Protocols - SNMP Tutorial
- 使用fuser命令结束一个文件的进程
- Introduction - SNMP Tutorial
- 300. Longest Increasing Subsequence LeetCode
- offsetLeft和style.left的区别
- 基于二叉树和数组实现限制长度的最优Huffman编码
- Android深入理解WebView——上
- 289. Game of Life LeetCode
- 《面向对象之三大特性》
- spring中scope(作用越)理解
- PHP简单MVC架构
- equals()和hashCode()的区别
- 为图片添加水印图片