最代码广告位
丶附耳聆听的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下载
最代码最近下载分享源代码列表最近下载
whywhywhy LV102019年8月29日
月亮月亮星星星星
筱进GG LV372019年7月11日
太阳太阳月亮星星
Lfa123 LV32018年11月17日
星星星星星星
番茄甜酱 LV32018年9月12日
星星星星星星
EQ666666 LV122018年8月30日
月亮月亮月亮
海乐神 LV42018年7月25日
月亮
sunboris514 LV82018年1月4日
月亮月亮
dengchao2233 LV32017年6月1日
星星星星星星
EthanDCX LV22017年4月10日
星星星星
kingmysoft LV22017年2月21日
星星星星
最代码最近浏览分享源代码列表最近浏览
yongqiang3471月9日
暂无贡献等级
wjm777777 LV12019年12月2日
星星
luohaipeng LV232019年11月18日
太阳月亮星星星星星星
数据库1 LV62019年10月28日
月亮星星星星
wanxiaochao LV102019年9月19日
月亮月亮星星星星
gwx550779 LV12019年9月16日
星星
whywhywhy LV102019年8月29日
月亮月亮星星星星
庭前的花开了 LV32019年7月11日
星星星星星星
筱进GG LV372019年7月11日
太阳太阳月亮星星
最代码安逸 LV112019年6月27日
月亮月亮星星星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友