兔子生兔子的问题
2015-10-09 13:10
288 查看
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第M个月的兔子总数为多少?
思路:
1.计算每对兔子的子女数(子女的子女不算),假设到第M个月,这一对兔子出生是在第N个月,则子女数为 sum = ( M - N - 1) * 2,然后递归算出每一对兔子的子女数,所有兔子的子女数相加,就是兔子总数,然而递归过程写得有点问题_(:з」∠)_暂时没调好;
2.随着月份数增加,兔子总数呈现斐波拉契数列:1,1,2,3,5,8,13,21,……,即 f(n) = f(n-1) + f(n-2) (具体参考博文:点击打开链接)
代码:
输入:月份M
输出:当前月份兔子总数
思路:
1.计算每对兔子的子女数(子女的子女不算),假设到第M个月,这一对兔子出生是在第N个月,则子女数为 sum = ( M - N - 1) * 2,然后递归算出每一对兔子的子女数,所有兔子的子女数相加,就是兔子总数,然而递归过程写得有点问题_(:з」∠)_暂时没调好;
2.随着月份数增加,兔子总数呈现斐波拉契数列:1,1,2,3,5,8,13,21,……,即 f(n) = f(n-1) + f(n-2) (具体参考博文:点击打开链接)
代码:
输入:月份M
输出:当前月份兔子总数
import java.util.Scanner; public class Rabbit { private static int sumRabbit(int Month) { int sum = 0; if (Month < 3) { sum = 1; } else { sum = sumRabbit(Month - 1) + sumRabbit(Month - 2); // System.out.println("Month: "+Month+" ; sum= " + sum); return sum; } return sum; } public static void main(String[] args) { int Month; Scanner sin = new Scanner(System.in); do { Month = sin.nextInt(); System.out.println("第" + Month + "个月生出的兔子有" + (new Rabbit()).sumRabbit(Month) + "只"); } while (sin.hasNext()); } }
相关文章推荐
- bat脚本如何自动执行 adb shell 以后的命令
- NBUT 1457 B - Sona
- iOS开发有关导航条坐标问题
- 链表的各种操作java版本
- HYSBZ 2038 小Z的袜子
- BZOJ 4292 PA2015 Równanie 枚举
- 自增符号++(自减符号--)带来的部分影响
- 【经典算法】: 罗马数字
- 不同情况下request.getContextPath()值的区别
- ECS 服务器CentOS系统如何开放端口
- ssh集成
- 15.2 CVPR 会议的时间
- 安卓解析XML文件系列3:使用DOM方式
- spring 学习
- Java 基础:Java语言运行机制
- 实战利用apache来做集群,实现负载均衡
- 向ActionBar中添加SearchView
- html+CSS 学习
- 软件测试管理要素
- Android中解析json数据的方式之一:Gson