附耳聆听的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下载
最代码最近下载分享源代码列表最近下载
sunboris5141月4日
暂无贡献等级
dengchao22332017年6月1日
暂无贡献等级
EthanDCX2017年4月10日
暂无贡献等级
kingmysoft2017年2月21日
暂无贡献等级
fanyiqiang2017年2月20日
最代码贡献等级说明
AException2017年2月9日
暂无贡献等级
zxb0724112017年1月11日
暂无贡献等级
zxjzxj12017年1月11日
暂无贡献等级
小马驹5122017年1月7日
暂无贡献等级
最代码最近浏览分享源代码列表最近浏览
TerryLG4月21日
暂无贡献等级
ls58220434月21日
暂无贡献等级
ldd8884月20日
最代码贡献等级说明
暂无贡献等级
kenpfang4月11日
暂无贡献等级
baggar4月10日
暂无贡献等级
jtxhhh94月4日
暂无贡献等级
ddqddqddq3月15日
暂无贡献等级
dashan6063月14日
最代码贡献等级说明
murphyLu3月13日
最代码贡献等级说明
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友