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

来源:互联网 发布:武汉教育频道网络直播 编辑:程序博客网 时间:2024/04/29 10:27

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

   斐波那契数列, S= Sn-1+Sn-2


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;//不符合条件就退出  
            }  
                  
        }  
    }  
}  



/**
 * 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
 * 问每个月的兔子总数为多少? 
 * 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
 * @author zhaoliang
 *
 */
public class TestRabbit {


public static void main(String[] args) {
System.out.println(getRabbitNum(6));
}
//根据兔子数规律找到递归方法,n代表月份
public static int getRabbitNum(int n) {
if (n == 1 || n == 2) {
return 1;
}else {
return getRabbitNum(n - 1) + getRabbitNum(n - 2);
}
}

}

1 0
原创粉丝点击