附耳聆听的gravatar头像
附耳聆听2017-01-03 11:11:30

JAVA递归算法demo实例

 * 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
 * 分析:我们要想办法找规律
 * 兔子对数
 * 第一个月: 1
 * 第二个月:1
 * 第三个月:2
 * 第四个月:3 
 * 第五个月:5
 * 第六个月:8
 * ...
 * 
 * 由此可见兔子对象的数据是:
 * 1,1,2,3,5,8...
 * 规则:
 * A:从第三项开始,每一项是前两项之和
 * B:而且说明前两项是已知的
 * 
 * 如何实现这个程序呢?
 * A:数组实现
 * B:变量的变化实现
 * C:递归实现
 * 
 * 假如相邻的两个月的兔子对数是a,b
 * 第一个相邻的数据:a=1,b=1
 * 第二个相邻的数据:a=1,b=2
 * 第三个相邻的数据:a=2,b=3
 * 第四个相邻的数据:a=3,b=5
 * 看到了:下一次的a是以前的b,下一次是以前的a+b

code:

package cn.io.com;

public class DiGui {

    public static void main(String[] str) {
        /*int[] arr=new int[20];
        arr[0]=1;
        arr[1]=1;
        arr[2]=arr[0]+arr[1];
        
        for (int x=2;x<arr.length;x++) {
            arr[x]=arr[x-2]+arr[x-1];
        }
        //System.err.println(arr[19]);
        int a=1;
        int b=1;
        for(int x=0;x<18;x++){
            int temp=a;
            a=b;
            b=temp+a;
        }
        System.err.println(b);*/
        System.out.println(fib(20));
    }

    private static int fib(int n) {
        if(n ==1 || n ==2){
            return 1;
        }else {
            return fib(n-1)+fib(n-2);
        }
        
    }
    
}

 

 

结果:6765!!!!!!

文件名:DiGui.java,文件大小:0.557K下载
最代码最近下载分享源代码列表最近下载
dengchao22336月1日
暂无贡献等级
EthanDCX4月10日
暂无贡献等级
kingmysoft2月21日
暂无贡献等级
fanyiqiang2月20日
最代码贡献等级说明
AException2月9日
暂无贡献等级
zxb0724111月11日
暂无贡献等级
zxjzxj11月11日
暂无贡献等级
小马驹5121月7日
暂无贡献等级
最代码最近浏览分享源代码列表最近浏览
奋青员前天
最代码贡献等级说明
ashion8月12日
暂无贡献等级
laotulv8月3日
暂无贡献等级
暂无贡献等级
Watson7月27日
最代码贡献等级说明
feel20137月26日
暂无贡献等级
Payton7月12日
暂无贡献等级
王治坚7月12日
暂无贡献等级
宛如初见7月7日
暂无贡献等级
六月6666月21日
暂无贡献等级
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友