代码编织梦想

目录

1. 递归

1) 概述

2) 单路递归 Single Recursion

E01. 阶乘

E02. 反向打印字符串

E03. 二分查找(单路递归)

E04. 冒泡排序(单路递归)

E05. 插入排序(单路递归)

E06. 约瑟夫问题[^16](单路递归)

3) 多路递归 Multi Recursion

E01. 斐波那契数列-Leetcode 70

E02. 汉诺塔[^13](多路递归)

E03. 杨辉三角[^6]

其它题目

4) 递归优化-记忆法

5) 递归优化-尾递归

6) 递归时间复杂度-Master theorem[^14]

7) 递归时间复杂度-展开求解


1. 递归

1) 概述

定义

计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集

In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances of the same problem.

比如单链表递归遍历的例子:

void f(Node node) {
    if(node == null) {
        return;
    }
    println("before:" + node.value)
    f(node.next);
    println("after:" + node.value)
}

说明:

  1. 自己调用自己,如果说每个函数对应着一种解决方案,自己调用自己意味着解决方案是一样的(
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_46013789/article/details/139205726

java递归 求阶乘_zhangmy12138的博客-爱代码爱编程_java递归求阶乘

 递归的原理; 1.每一级的函数调用都有它自己的变量。2.每一次函数调用都会有一次返回,并且是某一级递归返回到调用它的那一级,而不是直接返回到main()函数中的初始调用部分。 3.递归函数中,位于递归调用前的语句和各级被调函数具有相同的执行顺序。 4.递归函数中,位于递归调用后的语句的执行顺序和各个被调函数的顺序相反。 5.虽然每一级递归都有自己

递归的概述和求五阶-爱代码爱编程

什么是递归 如何使用递归求五的阶乘 图解 代码 public class RecurrenceDemo { public static void main(String[] args) { System.out

数据结构代码题(面试必备)-爱代码爱编程

本文是自己总结的面试中遇到的各种手写或者在线测试的代码题,汇总在此,解法大多参考了众多别人的方法,从各种途径搜罗来的相对简单的解法。但是当时是为了自己面试积累的,并没有记录下各个大神的链接,感谢曾经参考过的各位网上的大佬们提供的解法,这些代码全部都自己运行过没有问题,汇总一下提供给大家做个参考,也能供自己以后查阅。 栈和队列 (1) python实现栈

Java递归-爱代码爱编程

目录 1 递归【应用】  2递归求阶乘【应用】 3 递归遍历目录【应用】 1 递归【应用】 递归的介绍 以编程的角度来看,递归指的是方法定义中调用方法本身的现象 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算 递归的基本使

测试开发学习-爱代码爱编程

测试开发面试题 问1. 链表和数组的区别,和各自应用场景。 数组:我们知道不管是一维数组还是二维数组培训它们在内存里面的地址都 必须是连续的 优点:既然地址是连续的那么必然给我查找数据提供了极大的方便,让我们很容易的就能根据下标找到你需要的数据,提高了我们的效率 缺点:我们刚刚在它的优点中只讲到提高我们查找数据的效率,因为毕竟我们对数组的运用不只是查找数据

Java递归实现阶乘-爱代码爱编程

Java递归实现阶乘 package com.ycy1; public class Test05 { public static void main(String[] args) { int i = 5; int fac = Test05.fac(i); System.out.println(i + " 的阶乘是:" + fac); }

Java:阶乘(递归法)-爱代码爱编程

package ChongXingZuo; /**计算n的阶乘(以递归的方式计算): * 注意:【1】、1和0的阶乘是1 * 【2】、递归具备的两个条件:1、一个可以反复执行的递归过程; * 2、一个可以跳出执行过程的出口。 * **@author 暮之沧蓝 */ import java.util.Scanne

java使用递归计算阶乘-爱代码爱编程

java递归调用自身方法实现递归 import java.util.Scanner; public class Jiecheng { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.ou

java 递归求阶乘_我的猴子的博客-爱代码爱编程

需求:     .用递归求5的阶乘,并把结果显示在控制台输出 分析:     1.阶乘:一个正整数的阶乘是所有小于及等于该数的正整数的积,自然数n的阶乘写作n!         5!=5*4*3*2*1     2.递归出口:1!=1     3.递归规则:n!=n*(n-1)!        5!=5*4!; 思路:     1.定义一个方法,用于递归求

java使用递归实现阶乘-爱代码爱编程

import java.util.Scanner; public class Recursion01 {//递归 public static void main (String [] args){ //阶乘 Scanner sc =new Scanner(System.in); //创建一个scanner

java递归实现阶乘(黑马)-爱代码爱编程

概述 定义 计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集 比如单链表递归遍历的例子: void f(Node node) { if(node == null) {

java递归求阶乘_java递归方法求阶乘-爱代码爱编程

        一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。 亦即n!=1×2×3×...×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。 代码实现 public class Digui {