黑马程序员技术交流社区
标题: 古典问题 ,不死神兔可以函数方法写吗 [打印本页]
作者: yfc123 时间: 2016-6-8 20:09
标题: 古典问题 ,不死神兔可以函数方法写吗
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
作者: 云袭 时间: 2016-6-8 20:42
递归……
作者: Fangjie 时间: 2016-6-8 21:30
关于不死兔的算法
作者: TS-松子 时间: 2016-6-9 00:21
标题: 用的递归。
本帖最后由 TS-松子 于 2016-6-9 00:22 编辑
- package demo10;
- import java.util.Scanner;
- class Demo{
- public static void main(String[] args){
- //键盘录入要算的月数
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入月数:");
- int month = sc.nextInt();
- //调用方法算出各时期的兔子数量的数组(刚出生的,一个月的,成熟的)
- int[] counts = getCounts(month);
- System.out.println("兔子总对数为:"+(counts[0]+counts[1]+counts[2]));
- }
- public static int[] getCounts(int month) {
- int[] count= {1,0,0}; //定义初始兔子数量的数组
- if (month<0) {
- throw new RuntimeException("输入的月数有误!");
- }
- if (month==0) {
- return count;
- }
- count = getCounts(month-1); //得到上个月兔子数量的数组
- int temp = count[2]; //记录上个月成熟的兔子数
- count[2] += count[1]; //成熟的兔子等于上个月成熟的兔子加上一个月的兔子
- count[1] = count[0]; //一个月的兔子数等于上个月刚出生的兔子数
- count[0] = temp; //刚出生的兔子数等于上个月的成熟兔子数
- return count;
-
- }
- }
复制代码
作者: 归宿123 时间: 2016-6-9 00:40
666666666666666666666
作者: a499543100 时间: 2016-6-9 02:24
这都是大神啊
作者: yfc123 时间: 2016-6-9 11:36
谢谢{:2_30:}
作者: yfc123 时间: 2016-6-9 11:39
谢谢!!!!大神
作者: Aaron9527 时间: 2016-6-9 11:42
可以用递归做
- package cn.itcast.递归;
- /*
- * 需求:
- * 有一对兔子,第一个月是一对,第二个月还是一对,第三个月生了一对娃就是两对,第四个月就是三对,第五个月五对...
- * 1,1,2,3,5,8,...为斐波那契数列
- * */
- public class Rabbit {
- public static void main(String[] args) {
- //定义方法,传入月份。
- recursion(5);
- System.out.println(recursion(10));
- }
- private static int recursion(int i) {
- //第一个月和第二个月都是一对,为初始条件
- if(i==1||i==2){
- return 1;
- }else {
- return recursion(i-2)+recursion(i-1);//每一个月都是前两个月之和,比如五月,就是三月和四月数量的和
- }
- }
-
- }
复制代码
作者: Fangjie 时间: 2016-6-9 18:36
这种代码还简单些!
作者: 夜月 时间: 2016-6-9 19:05
昨天递归
作者: Aaron9527 时间: 2016-6-10 00:19
恩!还可以,就是理解难一点,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |