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

来源:互联网 发布:网络盗窃罪立案标准 编辑:程序博客网 时间:2024/04/29 13:31

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

解:  然我们看看 没个月兔子的总数量  1 1 2 3 5 8 13 21 34 。。。。。

 靠,这就是一个Fibonacci的问题

java 实现 :


public class TestNIO {public static void main(String[] args) {fibo(7);}/** * :有一对兔子,从出生后第3个月起每个月都生一对兔子, * 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? *  0 1 1 2 3 5 8 13 21 .... * @param month */private static void fibo(int month) {// 从数据的裴烈规律可以看出 这是一个斐波那契数列的问题/// 定义数据 上个月的数量 上上个月的数量int pre = 1 ;int prepre = 1 ;/// 总数量int total ;if(month == 1){System.out.println("第一个月的数量 :"+1);}else if(month == 2){System.out.println("第一个月的数量 :"+1);System.out.println("第二个月的数量 : " + 1);}else if(month > 2){System.out.println("第1个月的数量 :"+1);System.out.println("第2个月的数量 : " + 1);for(int j = 3 ; j <= month ; j++ ){total = pre + prepre ;System.out.println("第" + j + "个月的总数量 :" + total);prepre = pre ;pre = total ;}}}}
第1个月的数量 :1第2个月的数量 : 1第3个月的总数量 :2第4个月的总数量 :3第5个月的总数量 :5第6个月的总数量 :8第7个月的总数量 :13

在如上的算法中,可以使用递归进行实现,但考虑到递归对内存的占用太多,所以应该优先考虑使用循环进行实现。

0 0