- 2025-01-22函数递归的介绍
1.递归的定义在C语言中,递归就是函数自己调用自己上面的代码就是main函数在函数主体内自己调用自己但是,上面的代码存在问题:main函数反复地自己调用自己,不受限制,停不下来。最终形成死递归,导致栈溢出1.0栈溢出 每一次函数调用,都要从内存上的栈区为这次函数调用分配
- 2025-01-21C语言/C++——递归、递推、动态规划
什么是动态规划:给定一个问题,我们把他拆成一个个子问题,直到子问题可以直接解决。然后把子问题的答案保存起来,以减少重复计算。再根据子问题的答案反推,得出原问题解的一种方法递归的过程:"递"的过程是分解子问题的过程;(dfs是第归的一种) “归
- 2025-01-21dfs专题一:递归
dfs简介:1.汉诺塔问题link:面试题08.06.汉诺塔问题-力扣(LeetCode)codeclassSolution{public:voidhanota(vector<int>&A,vector<int>&B,vector<int>&C){dfs(A,B,C,A.size());}voiddfs(vector<int>&
- 2025-01-21蓝桥杯——求递归
publicstaticvoidmain(String[]args){ Scannersc=newScanner(System.in); longk=sc.nextLong(); longl=1;longr=Long.MAX_VALUE-1;//从最大的数字开始找 while(l<r){//折半查找 longmid=(l+r)/2;
- 2025-01-19学习代码并分享Day5
近期一段时间的学习,了解到很多新东西,一共有以下部分组成:1、递归2、移位操作符3、位操作符4、逗号表达式1、递归递归就是函数自己调用自己。最简单的一个递归实例如下:#include<stdio.h>intmain(){printf("digui\n");main();return0;}这段代码的
- 2025-01-19递归实现青蛙跳台阶问题与汉诺塔问题
1.青蛙跳台阶问题1.1题目描述一只青蛙一次可以跳1到2阶台阶,问,青蛙跳到第n阶台阶时,有几种跳法?跳到第1阶台阶时,有1种跳法跳到第2阶台阶时,有2种跳法跳到第n阶台阶时,从第n-1阶台阶跳1阶台阶到达第n阶台阶,这是方法1从第n-2阶台阶跳2阶台阶到达第n阶台阶,这是方法2所以
- 2025-01-18关于动态规划
主要问题大概是动规基础(斐波那契),背包,打家劫舍,股票,子序列。解决也主要是先分类,建立dp数组,明确dp数组的含义,dp数组的初始化,遍历顺序。动规基础斐波那契数列,爬楼梯,建立dp数组的时候,递推公式的推导就要参考建立dp数组并且明确dp数组的含义比如下面的最小花费爬楼梯,明确含义就可以在
- 2025-01-18LCS(递归/记忆化/dp)
题目链接:https://leetcode.cn/problems/longest-common-subsequence/TLE暴力递归+记忆化版本(基于字符串长度无优化版本)//注意text1[i1-1]==text2[i2-1]classSolution{public:intdp[1000][1000];intlongestCommonSubsequence(stringtext1,stringtext2){
- 2025-01-18单词搜索(递归)
题目链接:https://leetcode.cn/problems/word-search/题意:给定二维char数组,询问是否能够有路径来获得给定的字符数组无法改为动态规划表classSolution{public:boolexist(vector<vector<char>>&board,stringword){intn=board.size();intm=boa
- 2025-01-16递归——用最少的代码完成复杂的运算-函数(中)
前言:上期我们介绍了函数的概念,库函数,自定义函数等等,这期我们来介绍一下函数的嵌套调用,链式访问,和函数递归。传送门:上一篇文章在这里函数上一,函数的嵌套调用听到函数嵌套不知你是否会想起,条件嵌套,和循环嵌套;条件嵌套:是多个条件语句比如说多个if语句嵌套在一起;循环嵌套:是多
- 2025-01-15LeetCode题练习与总结:移除盒子--546
一、题目描述给出一些不同颜色的盒子 boxes ,盒子的颜色由不同的正数表示。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 k 个盒子(k >=1),这样一轮之后你将得到 k*k 个积分。返回 你能获得的最大积分和 。示例1:
- 2025-01-15解题报告-论对“线段树思想”的新理解
解题报告-论对“线段树思想”的新理解一晚上刷了两个线段树知识点,也是见识到了线段树世界的博大精深。我们发现无论怎么写线段树,大体框架都是一样的。那么为什么有那么多种线段树呢?一个是线段树标记的不同。在李超线段树中,每个结点维护的是当前结点最上面那条线的编号,于是更新
- 2025-01-15[数据结构学习笔记13] 递归简介(Recursion)
递归让我们把问题由大分小,小到我们能够轻松处理。递归方法有两个要注意的点:1.递归方法会重复的被调用;2.必须有一个终止条件,否则方法调用不停,会导致stackoverflow。看下面的一个例子,这个没有终止条件,会报错!functionhello(){console.log("I'malittlefunction,shorta
- 2025-01-14编译原理笔记第一篇_天书_(加密的)
小序Abstract余闻,古有大贤能者,怀大神通,俱玄妙幽深之大法也。若晓习之,可使铁石通得人言。尝想往之,然不知其所在,故不得往,不知其名号,故不得访。或问曰:何不问旁人矣?呜呼哀哉!今人者,多搬来搬去之徒,目光短浅之辈,生性愚钝,盲然自大,罔识大法,问之空徒劳矣!某日夜中,余寐,飘飘乎神往,往而遇一
- 2025-01-13LeetCode100之分割回文串(131)--Java
1.问题描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串。返回 s 所有可能的分割方案。 示例1输入:s="aab"输出:[["a","a","b"],["aa","b"]] 示例2 输入:s="a"输出:[["a"]] 提
- 2025-01-12在那些场景下可能会用到递归?递归的缺点?
一、递归的应用场景(一)树形结构相关问题文件系统遍历在计算机的文件系统中,目录和文件构成了一棵树。例如,一个根目录下有多个子目录,每个子目录又可以包含更多的子目录和文件。递归可以很好地遍历这种结构。以遍历一个文件夹中的所有文件为例,算法可以先处理根目录下的文件,然后对每
- 2025-01-12【轻松掌握数据结构与算法】递归与回溯:解决复杂问题的利器
在数据结构与算法的世界中,递归和回溯是两种强大的技术,它们可以帮助我们解决许多看似复杂的问题。本文将详细介绍递归和回溯的基本概念、应用场景以及它们的实现方法,并通过示例和图表来帮助你更好地理解这些概念。递归:自我调用的力量递归是一种函数调用自身的技术。它允许我
- 2025-01-12用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值
在前端开发中,可以使用JavaScript来生成一个长度为5的数组,数组中的元素是2到32之间的不重复随机数。递归算法可以用来确保生成的随机数是唯一的,即数组中不会出现重复的值。以下是一个可能的实现:functiongenerateUniqueRandomNumbers(arr,min,max,length){if(arr.length>
- 2025-01-11汉诺塔递归实现
汉诺塔其实没有那么难,关键是搞懂递归是啥。把递归搞懂汉诺塔就简单了。看之前先把题目搞懂,之前我走弯路了,可以在b站上找视频再结合这个感悟,大多数UP没有提到以下感悟。最后付代码。需要重点理解的是递归的大化小,但每次小递归都需要完成任务,找到通式。重点搞懂递归是干哈的。
- 2025-01-11字符串解码(递归)
题目链接:https://leetcode.cn/problems/decode-string/题意:嵌套递归classSolution{public:intwhere;stringrepeat(stringpath,intcnt){stringans="";for(inti=1;i<=cnt;i++){ans+=path;
- 2025-01-11递归的几个例子
递归1数字划分:求将数字分解为不同数字相加的种类例如2=2、2=1+1两种3=3,3=2+1,3=1+1+1三种intsplit(intn,intmax){if(n==0||max==1)return1;if(max>n)returnsplit(n,n);returnsplit(n-max,max)+split(n,max-
- 2025-01-11如何避免函数调用栈溢出?
在前端开发中,函数调用栈溢出通常是由于递归调用过深或者大量嵌套函数调用导致的。为了避免函数调用栈溢出,你可以采取以下几种策略:优化递归算法:尾递归优化:尾递归是一种特殊的递归形式,其中递归调用是函数体中最后执行的语句。通过优化尾递归,你可以将递归转换成循环,从而避免栈溢
- 2025-01-11请说说你对JavaScript中的递归、PTC、TCO和STC的了解
在JavaScript中,递归、PTC(ProperTailCall,适当的尾调用)、TCO(TailCallOptimization,尾调用优化)和STC(SyntacticTailCall,语法级尾调用)是关键概念,尤其在处理复杂问题和优化代码性能时显得尤为重要。以下是对这些概念的详细解释:1.递归(Recursion)递归是一种函数自我调用的技术,常用
- 2025-01-11文件筛选与提取、递归解压工具RecursiveDecompression
RecursiveDecompression是我用C#开发的一款实用工具,主要包括文件提取、递归解压缩两个功能。假设我要把 D:\Temp\CalcNotepad这个路径里面所有扩展名为vb的文件复制到另一个地方,一个一个复制很麻烦。 打开RD工具,选择源文件夹,然后选择目标路径D:\Test1(提前创建一个空白文件
- 2025-01-10124.【C语言】数据结构之快速排序的小区间优化和非递归的解决方法
目录1.小区间优化测试代码运行结果2.非递归的解决方法(重要!)递归产生的问题一般来说,递归改非递归有两种方法算法分析递归产生的二叉树栈的示意图先写代码框架再填写细节部分1.小区间优化回顾121.【C语言】数据结构之快速排序(未优化的Hoare排序存在的问题)以及