java基础算法之兔子总数

来源:互联网 发布:发工资条软件 编辑:程序博客网 时间:2024/05/18 00:27

package mr.y.arithmetic;
/**
*
* 有一对兔子,从出生后第3个月起每个月都生一对兔子,
* 小兔子长到第三个月后每个月又生一对兔子,假如兔子
* 都不死,问每个月的兔子总数为多少?
*
*
*问题分析:
* 月数: 1 2 3 4 5 6 7 8 …
* 兔子: 1 1 2 3 5 8 13 21…
*
* 规律很明显,n月兔子数 = (n-1)兔子数+(n-2)兔子数 其中 n>2
* 但是我们要理解规律为什么是这样。
*
* 假设 我们要算 第n个月兔子的 总数, 那么应该是这样
* 上个月兔子总数 + 这个月出生的兔子总数
* 上个月兔子总数 应该是 n-1月的兔子数
* 这个月出生的兔子总数应该怎么获得? 根据题目可知道, 这个月能生育的兔子 应该是最少生长了2个月了,
* 所以2个月前出生的兔子到这个月都会生下1对兔子 ,那么两个月前 有多少对 兔子?结果很明显了
*
*/
public class TestRabbit {
public static void main(String[] args) {
System.out.println(getRabbitCount(3));

}public static long getRabbitCount(long n){      if(n<1){        return 0;    }    if(n<3){        return 1*2;    }    long sum1 = 1;    long sum2 = 1;    long sum = 0;    for(long i=3; i<n+1; i++){        sum = sum1+sum2;        sum2 = sum1;        sum1 = sum;    }    return sum*2;}

}

/**
* 程序结束, 如果有误, 还望大神指导 时间:2017年1月9日17:40:59
*/

0 0
原创粉丝点击