丶附耳聆听的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 下载
最代码最近下载分享源代码列表最近下载
邈话12123  LV9 2020年8月11日
whywhywhy  LV10 2019年8月29日
低调人  LV38 2019年7月11日
Lfa123  LV3 2018年11月17日
番茄甜酱  LV3 2018年9月12日
EQ666666  LV12 2018年8月30日
海乐神  LV4 2018年7月25日
sunboris514  LV8 2018年1月4日
dengchao2233  LV3 2017年6月1日
EthanDCX  LV2 2017年4月10日
最代码最近浏览分享源代码列表最近浏览
luozf1990  LV3 1月6日
159753yzy 2021年12月13日
暂无贡献等级
yjl19991127  LV2 2021年5月8日
2196316269  LV10 2021年2月24日
gaoyangzhi  LV1 2021年1月25日
b5655021  LV1 2020年12月25日
李海洋  LV12 2020年11月2日
邈话12123  LV9 2020年8月8日
wkc  LV21 2020年7月26日
hanyuiqng  LV9 2020年6月22日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友