码迷,mamicode.com
首页 > 其他好文 > 详细

古典问题-兔子生兔子

时间:2020-03-21 23:27:38      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:递归   integer   border   adl   article   NPU   count   int   return   

问题描述:

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

问题分析:

月份

兔子数

分析

1 1 f(1)=1
2 1 f(2)=1
3 1+1 f(3)=2
4 1+1  +1 f(4)=3
5 1+1+1  +1+1 f(5)=5
6 1+1+1+1+1 +1+1+1 f(6)=8
7 1+1+1+1+1+1+1+1  1+1+1+1+1 f(7)=13
.... .... ...
总结 1,1,2,3,5,8,13.... f(n)=f(n-1)-f(n-2)

初步分析可知,该问题可用递归方式解决;

编程解决:

import java.io.BufferedReader;
import java.io.InputStreamReader;
  
public class Main {
  
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = "";
        while((line = br.readLine())!= null){
            int monthCount = Integer.parseInt(line);
            System.out.println(getTotalCount(monthCount));
        }
    }
  
    public static int getTotalCount(int monthCount){
        if(monthCount<3){
            return 1;
        }   
        return getTotalCount(monthCount-1)+getTotalCount(monthCount-2);
    }
}

 

古典问题-兔子生兔子

标签:递归   integer   border   adl   article   NPU   count   int   return   

原文地址:https://www.cnblogs.com/weixiaotao/p/12543011.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!