题解 | #统计每个月兔子的总数#

统计每个月兔子的总数

http://www.nowcoder.com/practice/1221ec77125d4370833fd3ad5ba72395

Java
一个只有母兔子的世界
方法一:没什么特色就是逻辑观察思考

思考发现,
第n月时 年龄为3个月及3个月以上大的兔子数目=(上个月的)年龄>=3g个月的兔子数目
                                               +(上个月的)年龄为2个月的兔子数目
        年龄为2个月的兔子数目=(上个月的)年龄为1个月的兔子数目
        年龄为1个月的兔子数目=(本月的)年龄为3个月的兔子数目(它本月变为3岁立即就生了)
     1月大兔 2月大兔 3月及以上大兔
第1月     1     0     0
第2月     0     1     0
第3月     1     0     1
第4月     1     1     1
第5月     2     1     2
第6月     3     2     3
第7月     5     3     5
第8月     8     5     8

代码如下:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            int sum=sumRubbit(n);
            System.out.println(sum);
        }
    }
    public static int sumRubbit(int n){
        int month1=0;//初始化设置的是2月的值,以便三月开始循环
        int month2=1;
        int month3=0;
        int sum=0;
        if(n==1||n==2){
            return 1;
        }
        for(int i=3;i<=n;i++){
            month3=month3+month2;
            month2=month1;
            month1=month3; 
        }
        sum=month1+month2+month3;
        return sum;
    }
}

方法2:递归
函数要实现第n个月的兔子总数,它和之前的兔子数有什么关系呢,递归关系式怎么写呢?
发现:

第n个月的兔子总数=第n-1个月的兔子总数+第n个月里新生的兔子数(即年龄为1的兔子数)
即:
第n个月的兔子总数=第n-1个月的兔子总数+第n个月里年龄>=3的兔子数
第n个月的兔子总数=第n-1个月的兔子总数+(第n-1月里年龄为2的兔子+第n-1月里年龄>=3的兔数)
第n个月的兔子总数=第n-1个月的兔子总数+(第n-2月里年龄为1的兔子+第n-2月里年龄为2的兔子+第n-2月里年龄>=3兔)
第n个月的兔子总数=第n-1个月的兔子总数+第n-2个月的兔子总数

代码:

package niuke0409;
import java.util.*;
public class Rabbit {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            int sum=sumRubbit(n);
            System.out.println(sum);
        }
    }
    public static int sumRubbit(int n){
        int sum=0;
        if(n==1||n==2){
            return 1;
        }
        sum=sumRubbit(n-1)+sumRubbit(n-2);
        return sum;
    }
}
全部评论

相关推荐

只写bug的程序媛:人家说一本以上,不是及以上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 听劝,这个简历怎么改 #
14146次浏览 183人参与
# 面试被问“你的缺点是什么?”怎么答 #
6586次浏览 100人参与
# 水滴春招 #
16691次浏览 378人参与
# 入职第四天,心情怎么样 #
11380次浏览 63人参与
# 租房找室友 #
8069次浏览 53人参与
# 读研or工作,哪个性价比更高? #
26207次浏览 356人参与
# 职场新人生存指南 #
199342次浏览 5519人参与
# 参加完秋招的机械人,还参加春招吗? #
27045次浏览 276人参与
# 文科生还参加今年的春招吗 #
4123次浏览 31人参与
# 简历无回复,你会继续海投还是优化再投? #
48642次浏览 561人参与
# 你见过最离谱的招聘要求是什么? #
144729次浏览 829人参与
# 如果重来一次你还会读研吗 #
155737次浏览 1706人参与
# 机械人选offer,最看重什么? #
69081次浏览 449人参与
# 选择和努力,哪个更重要? #
44339次浏览 494人参与
# 如果再来一次,你还会学硬件吗 #
103659次浏览 1246人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
20532次浏览 414人参与
# 招聘要求与实际实习内容不符怎么办 #
46830次浏览 495人参与
# 22届毕业,是读研还是拿外包offer先苟着 #
4655次浏览 27人参与
# 你们的毕业论文什么进度了 #
901356次浏览 8961人参与
# 软开人,你觉得应届生多少薪资才算合理? #
81380次浏览 496人参与
# 国企还是互联网,你怎么选? #
109200次浏览 853人参与
牛客网
牛客企业服务