黑马程序员技术交流社区

标题: 黑马程序员_求大神指导 [打印本页]

作者: feifeixueyuan    时间: 2016-8-15 23:03
标题: 黑马程序员_求大神指导
------<a  target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

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


作者: heimaljx    时间: 2016-8-15 23:30
这问题也太简单了吧,给你一个简单的提示,指数函数
作者: 冯潜001    时间: 2016-8-15 23:42
可以百度一下,这个问题应该有详解
作者: 彭鸿儒    时间: 2016-8-16 16:24
..................................这不是不死神兔的题目啊,视频里有讲的,算了,我自己也写个试试手
[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);
                }
        }
}


作者: feifeixueyuan    时间: 2016-8-16 22:19
彭鸿儒 发表于 2016-8-16 16:24
..................................这不是不死神兔的题目啊,视频里有讲的,算了,我自己也写个试试手[mw_shl ...

{:2_43:}非常感谢
作者: wx_W1hr77lR    时间: 2016-8-17 00:21
[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);
        }
这个问题就是使用递归求斐波那契数列想通了就很简单.

作者: zztierlie    时间: 2016-8-17 15:23
学习了,楼上的句句好厉害啊
作者: zrtalent    时间: 2016-8-18 16:50
[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);
        }
    }
}

作者: 哈韩浪子    时间: 2016-8-18 16:57
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;//不符合条件就退出  
            }  
                  
        }  
    }  
}  
作者: li--yong    时间: 2016-8-18 17:41
受教了!!!
作者: 开心的流泪者    时间: 2016-8-18 18:12
有两点:
1.数值有规律,跟小母牛,费波纳次数列一样
2.看你怎样实现,用循环和 递归 。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2