zoukankan      html  css  js  c++  java
  • 递归-斐波那契&兔子

    斐波那契数列

    斐波那契数列的排列是:0,1,1,2,3,5,8,13,21,34,55,89,144……依次类推下去。

    观察后发现,它后一个数等于前面两个数的和。在这个数列中的数字,就被称为斐波那契数。

    递归思想:一个数等于前两个数的和。

    package com.autumn;
    
    /**
     * 斐波那契数列的排列
     * 0,1,1,2,3,5,8,13,21,34,55,89,144
     * 后一个数等于前面两个数的和
     */
    public class Recursive {
    
        public static void main(String[] args) {
            for (int i= 0;i<30;i++){
                System.out.println(fib(i));
            }
        }
    
        /**
         * 斐波那契竖列返回的值
         * @param index 下标,从0开始
         * @return 下标对应的值
         */
        public static int fib(int index){
            /*如果下标是0,返回0*/
            if (index == 0){
                return 0;
            }
            /*如果下标是1,返回1*/
            if (index ==1){
                return 1;
            }
            //否则,返回前两项的和
            return fib(index-1)+fib(index-2);
        }
    }

    兔子问题

    兔子问题:最初有1对兔子,三个月之后,每个月都会生产一对兔子(前提,兔子不会死),那么第n个月之后一共有多少对兔子

    package com.autumn;
    
    /**
     * 生兔子
     * 有一对兔子,生长三个月后。开始生第一对兔子,并且以后每月生一对兔子,小兔子生长三个月后,也开始生兔子,问N个月后兔子的总数量
     * 月份对应的兔子数: 1,1,2,3,5,8
     * 可以看出兔子第三个月才能生一对,也就是说第三个月兔子数 = 第二个月现有兔子的总数 + 第一个月能生的兔子数(即将出生数=能生数)
     * 递归的方式:
     * (1)规律:每个月兔子的总数是前两个月兔子总数之和
     * (2)出口:前两个月都是一对
     */
    public class Recursive {
    
        public static void main(String[] args) {
            for (int i= 1;i<30;i++){
                System.out.println(rabbit(i));
            }
        }
    
        /**
         * 当月兔子总数
         * @param index 月份,从1开始
         * @return 兔子的值
         */
        public static int rabbit(int index){
            /*如果月份是1,返回1*/
            if (index == 1){
                return 1;
            }
            /*如果月份是2,返回1*/
            if (index ==2){
                return 1;
            }
            //否则,返回前两项的和
            return rabbit(index-1)+ rabbit(index-2);
        }
    }
  • 相关阅读:
    Hbase写数据,存数据,读数据的详细过程 分类: B7_HBASE 2015-03-15 20:11 117人阅读 评论(0) 收藏
    机器学习(十四):深度学习梯度优化算法(SGD SGD-M NAG AdaGrad RMSProp Adam )
    机器学习(十三):卷积神经网络(CNN)
    机器学习(十一):FP增长(FP-growth)
    机器学习(十):Apriori算法
    Gulp命令自动生成精灵图
    esLint参数设置
    js 监控iframe URL的变化
    React+Redux学习笔记:React+Redux简易开发步骤
    React组件实现越级传递属性
  • 原文地址:https://www.cnblogs.com/aeolian/p/12132307.html
Copyright © 2011-2022 走看看