算法初级_Question5_兔子产子问题(java实现)

这篇文章讲述的是算法初级部分的兔子产子问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的《c语言趣味编程1000例》,如有错误或者不当之处,还望各位大神批评指正。

问题描述

有一对兔子,从出生后的第三个月起每个月都生一对兔子,小兔子出生的第三个月又生出一对兔子,以此类推,假设所有兔子都不死,问三个月内每个月有多少只兔子。

算法分析

月数小兔子中兔子老兔子兔子总数(单位:对)
11001
20101
31012
41113
51135
63148
743513

找到规律:从第三个月起,本月兔子总数为前两个月的总数之和(斐波那契数列)
1. f(n) = f(n-1) + f(n-2),n>2
2. 1 ,n<=2

代码实现

public static void main(String[] args) {

            for(int n=1 ; n<=30 ; n++){
                System.out.printf("%-10d" , fibonacci(n));
                if(n%4 == 0)
                    System.out.println();
            }
    }
    /**
     * 求第n个斐波那契数
     */
    private static int fibonacci(int n){
        if(n<=2)
            return 1 ;
        else
            return fibonacci(n-1) + fibonacci(n-2);
    }

样例输出

1         1         2         3         
5         8         13        21        
34        55        89        144       
233       377       610       987       
1597      2584      4181      6765      
10946     17711     28657     46368     
75025     121393    196418    317811    
514229    832040    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值