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);
        }
    }
  • 相关阅读:
    .NetMVC过滤器
    Vue-cli配置
    回顾2019年到今天
    八皇后问题
    约瑟夫环问题
    斐波那契函数列
    提高学习效率的方法
    感受爱阅读笔记
    Android IO流汇总
    Android的AsyncTask
  • 原文地址:https://www.cnblogs.com/aeolian/p/12132307.html
Copyright © 2011-2022 走看看