• 不死兔的三种方法


    package cn.itcast_02;

    /*

     * 有一对兔子,从出生后的第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假如兔子不死,问第20个月第兔子对数为多少?

     * 分析:

     * 兔子对数

     * 第一个月: 1

     * 第二个月: 1

     * 第三个月:  2

     * 第四个月: 3

     * 第五个月: 5

     * 第六个月: 8

     * 

     * 由此可见兔子的对象是:

     * 1,2,2,3,5,8

     * 规则:

     * 1.从第三项开始每项是前两项之和

     * 2.而且前两项是必须对

     * 

     * 实现方法:

     * 1.数组

     * 2.变量的变化实现

     * 

     * 假如相邻的两个月的兔子对数是a,b

     * 第一个相邻的数据:a=1,b=1;

     * 第一个相邻的数据:a=1,b=2;

     * 第一个相邻的数据:a=2,b=3;

     * 第一个相邻的数据:a=3,b=5;

     * 看到结果:下一次a是以前的b,下一次b是a+b的和

     * 

     */

    public class DiGuiDemo2 {

    public static void main(String[] args) {

    //===================数组实现=================

    int[] arr = new int[20];

    for(int w=0;w<arr.length;w++) {

    if(w<2) {

    arr[w]=1;

    }else {

    arr[w] =arr[w-1]+arr[w-2];

    }

    }

    DiGuiDemo2 d=new DiGuiDemo2();

    d.arrSs(arr);

    //================变量的变化实现====================

    int c=1,f=1;

    int tem =0;

    for(int i=0;i<18;i++) {

    tem=c;

    c=f;

    f=tem+c;

    System.out.println(f);

    }

    //================递归实现====================

    /*

    * 方法:返回值类型:int; 参数列表:int st; 出口条件:第一个月是1,第二个月是1; 规律:从第三个月开始,每一个月是前两个月之和 

    */

    System.out.println(fid(20));

    }

    public static int fid(int st) {

    if(st == 1 || st == 2) {

    return 1;

    }else {

    return fid(st-1)+fid(st-2);

    }

    }

     

    public void arrSs(int[] arr) {

    System.out.print("[");

    for(int a=0;a<arr.length;a++) {

    if(a==arr.length-1) {

    System.out.print(arr[a]);

    }else {

    System.out.print(arr[a]+",");

    }

    }

    System.out.print("]");

    }

    }

  • 相关阅读:
    oracle对象之序列
    PLSql工具介绍
    oracle对象之同义词
    oracle对象之视图
    缓存问题汇总
    消息队列问题汇总
    算法-排序算法-1
    redis-主从数据一致
    数据结构与算法-完全二叉树/满二叉树
    写缓冲器与无效化队列
  • 原文地址:https://www.cnblogs.com/nyfz/p/8533738.html
Copyright © 2020-2023  润新知