算法图解之递归(一)

算法图解之递归(一),第1张

阅读这篇文章就证明你已经开始踏上了算法的修仙之路,接下来我会两天一更,介绍图解算法里面的算法的实现, 适合Java程序员阅读。

文章目录
  • 前言
  • 一、使用工具
  • 二、分析循环和递归的优缺点
    • 一. 递归
    • 二. 循环
  • 三、栈的理解
    • 一. 提出问题
    • 二. 分析问题
    • 三. 解决问题
  • 四、递归的实现
    • 一. 初识递归
    • 二. 递归进阶
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

例如:需要掌握一种简单的数据结构–栈, 当然不了解也能理解递归,但是最好了解栈的原理,甚至用自己熟悉的编程语言实现栈。


提示:以下是本篇文章正文内容,下面案例可供参考

一、使用工具

记笔记:用Typora, 个人觉得做笔记用这个够用了,一定要学会的技能
写代码:idea 社区版 或者其他也行,不影响学习算法

二、分析循环和递归的优缺点 一. 递归
将一个问题, 能够细分若干个相同的问题处理, 比如开盲盒子,
你并不知道哪一个盒子里面有东西, 但是你能把它细分为打开
盒子这个步骤。  


递归的优点:程序能更加容易理解

递归的缺点:  
程序的性能可能没有循环高, 
容易进入死循环,需要引入
基线条件和递归条件概念

递归条件: 函数本身调用函数本身
基线条件:  就是结束调用的条件
二. 循环
循环的优点: 程序的性能高

循环的缺点: 程序可能不那么容易理解, 没有将问题细分很多小块去实现
三、栈的理解
栈是一种简单的数据结构,递归中所涉及到 *** 作有压栈,d栈。

栈的 *** 作原则: 先进后出

栈在 *** 作系统和内存中运用非常广泛,一定要掌握。
一. 提出问题

二. 分析问题

三. 解决问题

代码实现

public class Demo {

    public static void main(String[] args) {
        //函数调用的顺序
        greet("A");
    }
    public static void greet(String name){
        greet2("B");
        System.out.println("Hello " + name);
    }

    private static void greet2(String name) {
        System.out.println("Hello " + name);
    }
}

结果

总结

分析过程: 
先调用了greet函数, 将其放入内存中, 
greet函数中又调用了greet2函数, 
又将其放入到内存中, 内存的结构使用的是栈结构,
greet2函数执行,greet被挂起,greet再执行。

如果你掌握了这个,那么栈的 *** 作原则你也能理解了。
四、递归的实现 一. 初识递归

问题

打印1~5的数字(用递归实现)
public class Demo {

    public static void main(String[] args) {
        //递归的一个示范例子
        countDown(5);
    }
    
    public static int countDown(int n){
        System.out.println(n);
        if(n <= 1){    //基线条件
            return 0;
        }
        return countDown(n-1);    //递归条件
    }
}

结果

二. 递归进阶

问题

求 5!
public class Demo {

    public static void main(String[] args) {
        //求5的阶层
        int result = fact(5);
        System.out.println("5! = " + result);
    }

    public static int fact(int n) {
        if(n == 1){    //基线条件: 递归结束的条件
            return 1;
        }
        return n * fact(n-1);   //递归条件: 自己调用自己
    }
}

结果

总结
递归是一种思想,比如后面学习快速排序的时候,也需要使用到递归,所有
打下良好的基础是非常重要的

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/798391.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-06
下一篇2022-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存