题四:一对兔子生兔子,给个月份算有几只兔子

这个用递归就行,兔子就是个类,他们有自己的行为,这种思路可以帮助我们给兔子建立模型。

写法一:

/**
 * 有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月又生一对兔子,假如兔子都不死,问每个月的兔子总数多少?
 */
public class Test4 {
    public static void main(String[] args) {
        RabbitPair rabbitPair = new RabbitPair(6);
        System.out.println(rabbitPair.getPairCount()*2);
    }

}

class RabbitPair{
    int month;
    public RabbitPair(int month){
        this.month = month;
    }

    public int getPairCount(){
        if(month<3){
            return 1;
        }else{            return month-2+(new RabbitPair(month-2)).getPairCount();
        }

    }
}

写法二:

当然上边的代码也可以精简,但是就限定不是那么平易近人了,因为你不能一下看出这个是怎么得到的,简化后:

public class Test4 {
    public static void main(String[] args) {
        int month = 5;
        System.out.println(getPairCount(month)*2);
    }

    public static int getPairCount(int month){
        if(month<3){
            return 1;
        }else{
            return month-2+getPairCount(month-2);
        }
    }
}

原文地址:https://www.cnblogs.com/flying607/p/9004158.html

时间: 2024-10-11 16:36:24

题四:一对兔子生兔子,给个月份算有几只兔子的相关文章

【Python】【demo实验14】【练习实例】【斐波那契数列】【经典兔子生小兔子问题】

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 每个月的兔子数量 1:22:23:4 2+24:6 2+2+25:10 2+2+2+2+26:16 6+6+47:26 10+10+6 第一个月和第二个月兔子不繁殖 第三个月,两个兔子繁殖两个兔子,共四个 第四个月,两个兔子继续繁殖两个兔子,小兔子不繁殖:共6个 以此类推 2,2,4,6,10,16,26 这个数量刚好是斐波那契数列 的两倍 源代码: #

兔子生兔子函数递归

namespace 兔子生兔子函数递归{    class Program    {        static void Main(string[] args)        {            Console.WriteLine("请输入你想知道兔子哪个月的数量:");            int m = Convert.ToInt32(Console.ReadLine());            int sum = new Program().tuzi(m);  //定

【转】【量化课堂】一只兔子帮你理解 kNN

导语:商业哲学家 Jim Rohn 说过一句话,"你,就是你最常接触的五个人的平均."那么,在分析一个人时,我们不妨观察和他最亲密的几个人.同理的,在判定一个未知事物时,可以观察离它最近的几个样本,这就是 kNN(k最近邻)的方法. 作者:肖睿 编辑:宏观经济算命师 本文由JoinQuant量化课堂推出,本文的难度属于进阶(上),深度为 level-1 简介 kNN(k-Nearest Neighbours)是机器学习中最简单易懂的算法,它的适用面很广,并且在样本量足够大的情况下准确度

C语言经典题10道之古典问题: 兔子生兔问题

//2.古典问题: 有一对兔子, 从出生后第三个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死, 每个月的兔子总数为多少? //根据题找到规律 1对, 1对, 2对, 3, 5, 8, 13, 21......可以发现从第三个月起 后一个月是前两个月兔子总数的和. int m[23]; int i; m[0]=m[1]=1; for (i=0; i<24; i++) { if (i==0 || i==1) { printf("第%d个月月兔子数量为:1对

一对幼兔一个月后长成小兔(每对兔子默认一公一母),再过一个月长成成兔并且生下一对幼兔,以此类推,两年后有多少兔子

int a = 1; int b = 0; int c = 0; for (int i = 1; i <= 24; i++) { if (i == 1) { a = 1; b = 0; c = 0; } else { c = b + c; b = a; a = c; } Console.WriteLine("幼兔{0},小兔{1},大兔{2},总数{3}",a,b,c,(a+b+c));

兔子生兔子问题

一对兔子,从出生后的第3个月起每个月都生1对,小兔子长到第3个月后每个月又生1对兔子,假如兔子都不死,某个月的兔子总数是多少分析:每个月兔子总数1,1,2,3,5,8,13,21,34,55... n1=1;//第一个月n2=1;//第二个月 n1=n1+n2;//第三个月 n2=n1+n2;//第四个月 f(n):第n个月 兔子总量 f(n)=f(n-1)+f(n-2) f(5)=f(4)+f(3) f(4):3 f(3):2 f(2):1 f(1):1 <script> function

5.16 兔子生兔子,日期时间练习

namespace ConsoleApplication8 { class Program { static void Main(string[] args) { #region // //有一对幼兔,幼兔一个月后长成小兔,小兔一个月后长成成兔.并生下一对幼兔, //// 问几年后,有多少对幼兔,多少对小兔,多少对成兔,兔子总数是多少? // // 成兔每月生一对幼兔. // Console.WriteLine("请输入月份"); // int MM = int.Parse(Conso

兔子生宝宝算法

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? private static int sum(int i) { if(i==1||i==2) return 1; else return sum(i-1)+sum(i-2); }

for循环语句之兔子生崽

有一对幼兔,幼兔经过一个月长为小兔,小兔经过一个月长为大兔并且生下一对幼兔,而且大兔每月还会生下一对幼兔,问N个月后有多少对兔子 Console.WriteLine("请输入经过了几个月:"); int n = Convert.ToInt32(Console.ReadLine()); int syt = 1, byt = 0; int sxt = 0, bxt = 0; int sdt = 0, bdt = 0; for (int i = 1; i <= n; i++) { by