zoukankan      html  css  js  c++  java
  • 求每个月兔子的总数

     古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
    解法一:(数组) 
    public class rabbit {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int a[]=new int[24];//定义一个存放24个月的数组
            a[0]=a[1]=1;
            for(int i=0;i<24;i++){
                if(i==1||i==0)
                System.out.println("第"+(i+1)+"个月兔子的数量为"+1+"对");
                else{
                    a[i]=a[i-1]+a[i-2];
                    System.out.println("第"+(i+1)+"个月兔子的数量为"+a[i]+"对");
                }
            }
        }
    }

    运行结果:

    第1个月兔子的数量为1对
    第2个月兔子的数量为1对
    第3个月兔子的数量为2对
    第4个月兔子的数量为3对
    第5个月兔子的数量为5对
    第6个月兔子的数量为8对
    第7个月兔子的数量为13对
    第8个月兔子的数量为21对
    第9个月兔子的数量为34对
    第10个月兔子的数量为55对
    第11个月兔子的数量为89对
    第12个月兔子的数量为144对
    第13个月兔子的数量为233对
    第14个月兔子的数量为377对
    第15个月兔子的数量为610对
    第16个月兔子的数量为987对
    第17个月兔子的数量为1597对
    第18个月兔子的数量为2584对
    第19个月兔子的数量为4181对
    第20个月兔子的数量为6765对
    第21个月兔子的数量为10946对
    第22个月兔子的数量为17711对
    第23个月兔子的数量为28657对
    第24个月兔子的数量为46368对
    运行结果

     解法二:(不用数组)

    public class rabbit2 {
        public static void main(String[] args) {
            long f1,f2;
            f1=f2=1;
            for(int i=0;i<24;i=i+2){
                if(i==0||i==1){
                    System.out.println("第1个月兔子的数量为:1对");
                    System.out.println("第2个月兔子的数量为:1对");
                }
                else{
                    f1=f1+f2;
                    f2=f1+f2;
                    System.out.println("第"+(i+1)+"个月兔子的数量为"+f1+"对");
                    System.out.println("第"+(i+2)+"个月兔子的数量为"+f2+"对");
                }
            }
        }
    }

    解法三: 用迭代方法

    import java.util.Scanner;
    
    public class rabbit3 {
        public static void main(String[] args) {
            Scanner in=new Scanner(System.in);
            System.out.println("您需要查询第几个月兔子数?");
            int i=in.nextInt();
            int n=rabbit1(i);
            System.out.println("第"+i+"个月兔子的数量为:"+n+"对");
        }
        public static int rabbit1(int n){
            if(n<=0){
                System.out.println("输入错误,重新输入!您需要查询第几个月兔子数?");
                return 0;
            }
            if(n==1||n==2)
                return 1;
            if(n>2)
                return rabbit1(n-1)+rabbit1(n-2);
            return rabbit1(n-1)+rabbit1(n-2);
        }
    }
  • 相关阅读:
    软件项目管理
    asterisk channel driver dev ref
    标 题: 有什么办法快速把pc上的网址发送到手机上
    dongle0
    ubuntu
    Huawei E1750 Asterisk
    Jquery重新学习之七[Ajax运用总结A]
    Jquery重新学习之六[操作XML数据]
    Jquery重新学习之五[操作JSON数据]
    Jquery重新学习之四[核心属性与文档处理属性]
  • 原文地址:https://www.cnblogs.com/cailingsunny/p/4556572.html
Copyright © 2011-2022 走看看