栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

兔子繁殖问题 斐波那契数列 java实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

兔子繁殖问题 斐波那契数列 java实现

兔子繁殖问题 斐波那契数列 java实现 问题描述

一对兔子,从出生后第3个月起每个月都生一对兔子。
小兔子长到第3个月开始每个月又生一对兔子。
假如兔子都不死,
请问第1个月出生的一对兔子,第n个月有多少只兔子?

思路

求兔子数量总和
第n个月兔子数量 = 第(n-1)个月时的兔子数量 + 第n个月新生兔子数量
第n个月兔子新生数量 = (有生育能力的兔子的数量)也就是两个月前兔子的数量
所以有 第n个月兔子数量 = 第(n-1)个月时兔子的数量 + 第(n-2)个月时兔子的数量
假设f(n)为第n个月兔子的数量,则有 f(n) = f(n-1)+f(n-2)

解决

直接上代码

import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;


public class RabbitTest {

	//面向对象实现,如果n值太大时,可能会导致内存占用过多
    @Test
    public void count1(){
        int monthCount = 30;
        List rabbits = new ArrayList<>();
        Rabbit rabbitAdamAndEve = new Rabbit();
        rabbits.add(rabbitAdamAndEve);
        for (int i = 1; i  rabbits){
            if(this.months >=3){
                rabbits.add(new Rabbit());
            }
        }
        public void grow(){
            this.months++;
        }
    }


	//面向过程实现
    @Test
    public void count2(){
        System.out.println(fun(30)*2);
    }

    int fun(int m){
        if(m==1){
            return 1;
        }
        if(m==2){
            return 1;
        }
        else
            return fun(m-1)+fun(m-2);
    }

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424770.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号