zoukankan      html  css  js  c++  java
  • 32 递归

    /*
    * 需求:求5的阶乘
    * 5! = 5 * 4 * 3 * 2 * 1; //120
    * 5! = 5 * 4!; //120
    * 4! = 4 * 3!; //24
    * 3! = 3 * 2!; //6
    * 2! = 2 * 1!; //2
    * 1! = 1; //1


    n! = n * (n - 1)!

    递归:把大问题拆成很多小问题,然后再把小问题拆成更多的小问题,
    当我们把更多小问题解决了,小问题也解决了
    随着小问题的解决,大问题也随之解决了
    在方法本身不断的调用方法自己

    递归注意事项:
    递归一定要有出口,内存溢出
    递归次数不宜过多,内存溢出

    public void show(int n) {//5
    //出口
    if(n == 0) {
    return;
    }

    show(n - 1);
    }
    */

    public class jiecheng {
        public static void main(String[] args) {
            int result = jiec(5);
            System.out.println(result);
        }
    
        public static int jiec(int n) {
            if(n==1) {
                return 1;//出口
            }else {
                return n * jiec(n-1); //n!=n*(n-1)!
            }
        }
    }

    输出

    /*
    * 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
    * 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
    * 问第二十个月的兔子对数为多少?
    *
    *
    * 1
    * 1
    * 2
    * 3
    * 5
    * 8
    * 13
    *
    * 规律:除了第一个月和第二月以外,其余每个月都是前两个月之和
    * 斐波那契列数
    *
    */

    public class Demo2 {
        public static void main(String[] args) {
            int result = method(20);
            System.out.println(result);
        }
    
        //兔子数量多少对
        public static int method(int n) {
         if(n==1) {
             return 1;
         }else if (n==2) {
             return 1;
         }else {
             return method(n-1) + method(n-2); //如果不是第一个月和第二个月,则兔子的数量是前两个月之和
         }
        }
    }

    输出

  • 相关阅读:
    查看当前的数据和索引的总大小
    PXC安装
    [学习笔记]位运算
    PXC小结
    java算法集训代码填空题练习3
    mha配置参数详解
    [学习笔记]二分图
    Java 实现 蓝桥杯 等额本金
    账号权限问题导致 masterha_check_repl 检查失败
    [学习笔记]0/1分数规划
  • 原文地址:https://www.cnblogs.com/longesang/p/11304575.html
Copyright © 2011-2022 走看看