A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© feifeixueyuan 中级黑马   /  2016-8-15 23:03  /  654 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

------<a  target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

10 个回复

正序浏览
有两点:
1.数值有规律,跟小母牛,费波纳次数列一样
2.看你怎样实现,用循环和 递归 。
回复 使用道具 举报 1 0
受教了!!!
回复 使用道具 举报
import java.util.*;  
  
public class RubbitTest{  
    public static void main (String[] args) {  
        long s1,s2;// 定义这个月和下个月兔子的数量  
        s1 = 1;  //第一个月为1对  
        s2 = 1;  //第二个月为1对  
        int i=1;  //定义一个控制变量  
        int m;  // 月份数  
        Scanner in = new Scanner(System.in); //从控制台输入想要查看的月份  
        System.out.println("请输入你想要查看的月数:");//输入提示  
        m = in.nextInt();//输入的整数月份赋值给m  
        //while循环  
        while(true){  
            //第一个月和第二个月兔子的数量都为1对  
            if(i==1||i==2){  
                System.out.println(i+" month: "+s1);  
                i++; // 控制变量 i 加1  
            }  
            // i 大于3并且小于我们需要查看的月份  
            else if(i<m){  
                s1 = s1+s2;   
                s2 = s1+s2;   
                System.out.println(i+" month: "+s1);  
                    i++;//月份加1  
                System.out.println(i+ " month: "+s2);  
                    i++; //朋份加1  
            }else{  
                break;//不符合条件就退出  
            }  
                  
        }  
    }  
}  
回复 使用道具 举报
[Objective-C] 纯文本查看 复制代码
import java.util.Scanner;
 
public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入时间:");
        int times = sc.nextInt();
        System.out.println(times + "个月后,兔子的数量是" + getSum(times) + "对");
    }
 
    private static int getSum(int times) {
        if (times == 1 || times == 2) {
            return 1;
        }else {
            return getSum(times - 1) + getSum(times - 2);
        }
    }
}
回复 使用道具 举报
学习了,楼上的句句好厉害啊
回复 使用道具 举报
[Java] 纯文本查看 复制代码
	public static void main(String[] args) {
		System.out.println(getSum(8));
	}
	// 1 1 2 3 5 8 13 21
	public static int getSum(int i) {
		if (i == 1 || i == 2) {
			return 1;
		}
		return getSum(i - 1) + getSum(i - 2);
	}
这个问题就是使用递归求斐波那契数列想通了就很简单.
回复 使用道具 举报
彭鸿儒 发表于 2016-8-16 16:24
..................................这不是不死神兔的题目啊,视频里有讲的,算了,我自己也写个试试手[mw_shl ...

{:2_43:}非常感谢
回复 使用道具 举报
..................................这不是不死神兔的题目啊,视频里有讲的,算了,我自己也写个试试手
[AppleScript] 纯文本查看 复制代码
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入时间:");
		int times = sc.nextInt();
		System.out.println(times + "个月后,兔子的数量是" + getSum(times) + "对");
	}

	private static int getSum(int times) {
		if (times == 1 || times == 2) {
			return 1;
		}else {
			return getSum(times - 1) + getSum(times - 2);
		}
	}
}

回复 使用道具 举报
可以百度一下,这个问题应该有详解
回复 使用道具 举报
这问题也太简单了吧,给你一个简单的提示,指数函数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马