zoukankan      html  css  js  c++  java
  • 数据结构之递归算法

    首先通过两个小案例来认识一下递归

    package com.gcy.recursion;

    import com.gcy.linkedlist.TestStack;

    /**
    * 简单回顾递归调用
    * @author Administrator
    *
    */
    public class RecursionTest {

    public static void main(String[] args) {
    //理解其打印顺序应该为2,3,4,5,6,7
    test(7);
    //阶乘问题,计算4的阶乘
    int result=factorial(4);
    System.out.println("4的阶乘为:"+result);

    }
    //打印问题
    public static void test(int n) {
    if(n>2) {
    test(n-1);
    }
    System.out.println(n);
    }
    //阶乘问题
    public static int factorial(int n ) {
    if(n==1) {
    return 1;
    }else {
    return factorial(n-1)*n;
    }
    }

    }

    递归可以解决的问题:

    1.数学问题:八皇后问题、汉诺塔问题,阶乘,迷宫问题,球和篮子等

    2.各种算法中国也会使用到:快速排序,归并排序、二分查找、分治算法

    递归需要遵守的重要规则

    1.在执行额一个方法时,创建一个新的受保护的独立空间(栈空间)

    2.方法的局部变量时独立的,不会互相影响

    3.递归必须向递归的条件接近,否则会发生无限递归

    4.当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果放回给谁,同时当方法执行完毕或者返回时,该方法就执行完毕

  • 相关阅读:
    OPENGLES 绘制纹理带黑圈pre-multiplying
    listview相关代码整理
    时区列表
    (迪杰斯特拉)Dijkstra算法
    全源最短路径(Floyd算法)
    go配置私有仓库 (go mod配置私有仓库)
    mingw+gcc 10.1下载
    线段树应用及概况
    清理docker常用命令
    minio设置永久访问链接
  • 原文地址:https://www.cnblogs.com/juddy/p/13764813.html
Copyright © 2011-2022 走看看