首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏猿说编程

    10.python递归函数

    一个函数在函数体内部调用自己,这样的函数称为递归函数,递归的次数在python是有限制的,默认递归次数是997次,超过997次会报错:RecursionError. ? """   # 使用递归函数实现阶乘 # 举个例子,计算9的阶乘:9! 案例二:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少? )) 计算结果:1534 二.递归函数使用需要注意的问题 1.一定要有结束条件 2.默认递归次数是997次,超过997次会报错:RecursionError.

    1.3K20发布于 2020-03-12
  • 来自专栏Linux云计算及前后端开发

    Python基础10-函数的递归

    函数递归介绍 三元表达式 列表生成式字典生成式集合生成式 匿名函数 -曾老湿, 江湖人称曾老大。 ---- 函数递归介绍 ---- 什么是函数递归 函数嵌套调用的一种特殊形式,在调用一个函数的过程中,又直接或间接的调用该函数本身,称之为函数的递归调用 例如: def foo(): print 递归调用必须有两个明确的阶段 1.回溯:一次次递归调用下去,但是需要注意的是,每一次重复,问题的规模都应该有所减少,直到最小值,即回溯阶段要有一个明确的结束条件. 2.递推:往回一层一层的推算出结果 举个栗子: 有一个列表 l=[1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,]]]]]]]]]]] 想取出里面的数据 l=[1,[2,[3,[4,[5,[6,[7,[8,[9,[  此时此刻,用递归函数就会好很多,递归只需要把控好结束条件,代码如下,它不香嘛?

    40830编辑于 2022-09-26
  • 来自专栏Crossin的编程教室

    10张动图形象展示「递归」等概念

    本文整理了10张Gif动图,有助于认识循环、递归、二分检索等概念的具体运行情况。 一、循环 GIF 1:最简单的 while 循环 ? GIF 2:带 if/else 的循环 ? 二、递归 GIF 3:递归概念的最直接演示 ? GIF 4:递归的代码示例 ? GIF 5:递归求斐波那契数列 ? GIF 6:递归求阶乘 ? GIF 10:二分检索树 ?----

    64351发布于 2020-10-19
  • 来自专栏布衣者博客

    LeetCode-算法-递归和回溯-第10

    return l1 }else{ l2.Next=mergeTwoLists(l1, l2.Next) return l2 } } 思路:通过递归方式实现 ,是其完成head->node->head的闭环 head.Next=nil//之后切断head->node,则只剩下node->head return newhead } 思路:通过递归的方式实现

    37230发布于 2021-09-07
  • 来自专栏深度学习之tensorflow实战篇

    递归与伪递归区别,Python 实现递归与尾递归

          递归函数在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函 数。(1) 递归就是在过程或函数里调用自身。 (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 递归一般用于解决三类问题:  (1)数据的定义是按递归定义的。(n的阶乘)    (2)问题解法按递归实现。 (回溯)    (3)数据的结构形式是按递归定义的。(二叉树的遍历,图的搜索) 递归的缺点:   递归解题相对常用的算法如普通循环等,运行效率较低。 因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储,因此递归次数过多容易造成栈溢出。 小结 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。 针对尾递归优化的语言可以通过尾递归防止栈溢出。

    2.1K10发布于 2019-02-14
  • 来自专栏小詹同学

    10张 GIF 动图让你弄懂递归等概念

    一、循环 GIF 1:最简单的 while 循环 GIF 2:带 if/else 的循环 二、递归 GIF 3:递归概念的直接演示 GIF 4:递归的代码示例 GIF 5:递归求斐波那契数列 GIF 6 :递归求阶乘 三、按值传递和按引用传递 GIF 7:按值传递和按引用传递的区别 四、线性检索和二分检索 GIF 8:线性检索和二分检索求 23 的位置 GIF 9:线性检索和二分检索求 1 的位置 GIF 10:二分检索树

    58520发布于 2019-08-01
  • 来自专栏Michael阿明学习之路

    LeetCode 10. 正则表达式匹配(递归DP)

    通配符匹配(DP) 2.1 递归 ?

    1.3K30发布于 2020-07-13
  • 来自专栏深度学习之tensorflow实战篇

    递归与伪递归区别,Python 实现递归与尾递归

          递归函数在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函 数。(1) 递归就是在过程或函数里调用自身。 (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 递归一般用于解决三类问题:  (1)数据的定义是按递归定义的。(n的阶乘)    (2)问题解法按递归实现。 (回溯)    (3)数据的结构形式是按递归定义的。(二叉树的遍历,图的搜索) 递归的缺点:   递归解题相对常用的算法如普通循环等,运行效率较低。 因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储,因此递归次数过多容易造成栈溢出。 小结 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。 针对尾递归优化的语言可以通过尾递归防止栈溢出。

    2.5K70发布于 2018-03-16
  • 来自专栏五分钟学算法

    10张 GIF 动图让你弄懂递归等概念

    今天为大家整理了十张动图GIFS,有助于认识循环、递归、二分检索等概念的具体运行情况。 一、循环 GIF 1:最简单的 while 循环 ? GIF 2:带 if/else 的循环 ? 二、递归 GIF 3:递归概念的直接演示 ? GIF 4:递归的代码示例 ? GIF 5:递归求斐波那契数列 ? GIF 6:递归求阶乘 ? GIF 10:二分检索树 ?

    1.3K20发布于 2019-07-30
  • 来自专栏技术一点点成长

    递归与尾递归

    前言:   本博客前面介绍了不少跟递归的思想相关的例子,比如“汉诺塔”,“八皇后”等。因最近又回忆起“尾递归”,故本文通过2个例子再跟大伙儿探讨一下尾递归。。。 什么是尾递归: 当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归递归实例一: 求阶乘! java.util.Scanner; 4 5 public class Factorial { 6 7 /** 8 * @param args 9 */ 10 43 } 44 } 45 46 } 测试输出: Please input a integer below 15 to be tested: 3 6 11 39916800 10 java.util.Scanner; 4 5 public class Palindrome { 6 7 /** 8 * @param args 9 */ 10

    1.2K20编辑于 2022-08-09
  • 来自专栏踏浪的文章

    递归与尾递归

    在介绍递归与尾递归之前,我们来看看递归的定义:程序调用自身的编程技巧称为递归( recursion) 百度对递归的定义:递归 接着,我们再来看看一道题 编写一个函数fn,接收一个或者多个参数,其中一个参数为 #尾递归 如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。 (n -1, total + n) } 同样是 n=5,来看看运行过程 n = 5 ==> fn(5, 1) n = 4 ==> fn(4, 6) n = 3 ==> fn(3, 10) n = 2 = 上面就是关于一般递归与尾递归的说明。但是这里存在一个很大的问题,那就是JavaScript的 V8引擎 对尾递归的优化做的并不好,上面的代码尾递归还不如一般的递归。 以上就是关于递归与尾递归的说明以及优化,当然,如果你要更好的方案,欢迎在评论区留言。

    1.4K10发布于 2019-11-28
  • 来自专栏python+前端 知识分享

    「Python」递归函数(递归特点和递归案例)

    函数调用自身的编程技巧称为递归。一、递归函数的特点特点:一个函数内部调用自己,函数内部可以调用其他函数,当然在函数内部也可以调用自己。代码特点:1. 这个非常重要,通常被称为递归的出口,否则会出现死循环示例代码:def sum_numbers(num): print(num) # 递归的出口很重要,否则会出现死循环 # 递归的出口: 二、递归案例 - 计算数字累加需求:1. 定义一个函数 sum_numbers2. 能够接收一个 num 的整数参数,3. ,初次接触递归会感觉有些吃力,在处理不确定的循环条件时,格外的有用,例如遍历整个文件目录的结构。 以上就是对递归函数的相关介绍,后面开始介绍面向对象,这个也是编程语言中重要且难的知识点了,或许文字教程不会很通透但是也有Python视频教程在python自学网。

    4K30编辑于 2022-06-15
  • 来自专栏Linux云计算网络

    漫谈递归转非递归

    { 7 int mid = n/2; 8 if (key == arr[mid-1]) //第一种简单情境 9 return true; 10 mid=partition(a,l,r); 7 qsort(a,l,mid-1); 8 //state 1 9 qsort(a,mid+1,r); 10 =EOF) 9 { 10 if(n<3) 11 cout<<1<<endl; 12 else 13 func(n (int i=0;i<M;i++) 33 { 34 nr[i]=nc[i]+np[i]+nr[i]; 35 nr[i+1]=nr[i+1]+nr[i]/10 ; 45 nResult[i]%=10; 46 } 47 48 for

    2.3K70发布于 2018-01-11
  • 来自专栏高级前端工程师学习必备

    搞定大厂算法面试之leetcode精讲10.递归&分治

    搞定大厂算法面试之leetcode精讲10.递归&分治 视频教程(高效学习):点击学习 目录: 1.开篇介绍 2.时间空间复杂度 3.动态规划 4.贪心 5.二分查找 6.深度优先&广度优先 7.双指针 8.滑动窗口 9.位运算 10.递归&分治 11剪枝&回溯 12.堆 13.单调栈 14.排序算法 15.链表 16.set&map 17.栈 18.队列 19.数组 20.字符串 21.树 22.字典树 23.并查集 24.其他类型题 递归三要素 递归函数以及参数 递归终止条件 递归单层搜索逻辑 递归伪代码模版: function recursion(level, param1, param2, .. 空间复杂度:O(logn),递归栈的消耗,不断二分。 二叉树中的最大路径和 (hard) 方法1.递归 ds_107 思路:从根节点递归,每次递归分为走左边、右边、不动 3种情况,用当前节点加上左右子树最大路径和不断更新最大路径和 复杂度:时间复杂度O

    55540编辑于 2021-11-29
  • 来自专栏Vincent-yuan

    递归

    递归是一种广泛的算法。 其中用到了递归的数据结构和算法:DFS深度优先搜索、前中后序二叉树遍历等。 递归公式:f(n)=f(n-1)+1 其中f(1)=1 1.递归需要满足的三个条件 一个条件的解可以分解为几个子问题的解 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样 存在递归终止条件 4.把递归代码改写为非递归代码 递归有利有弊;利是递归代码表达能力很强,写起来简洁; 而弊就是空间复杂度高,有堆栈溢出风险, 存在重复计算,过多的函数调用会耗时过多等问题。 所以,在开发过程中,我们要根据实际情况来选择是否需要用递归来实现代码。 如下:递归的代码改为非递归 是否所以的递归代码可以改为这种迭代循环的非递归写法呢? 笼统的讲,可以。 课后思考: 我们平时调试喜欢用IDE的单步跟踪功能,但是像规模比较大、递归层次很深的递归代码,几乎无法使用这种调试方式。对于递归代码,你有什么好的调试方式?

    1.2K40编辑于 2022-05-06
  • 来自专栏若尘的技术专栏

    递归

    @toc 递归 递归的算法思想 基本思想 - 把一个问题划分为一个或多个规模更小的子问题,然后用同样的方法解规模更小的子问题 递归算法的基本设计步骤 - 找到问题的初始条件(递归出口),即当问题规模小到某个值时 ,该问题变得很简单,能够直接求解 - 设计一个策略,用于将一个问题划分为一个或多个一步步接近递归出口的相似的规模更小的子问题 - 将所解决的各个小问题的解组合起来,即可得到原问题的解 设计递归算法需要注意以下几个问题 每个递归求解的问题规模如何缩小? 多大规模的问题可作为递归出口? 随着问题规模的缩小,能到达递归出口吗? 递归设计实例 1. 公式法 对于下列形式的递归方程 - T(n) = aT(n/b) + f(n) - 其中 a >= 1, b > 1是常数,f(n)是一个渐进正函数,可以使用公式法(Master Method ) 方便快捷地求得递归方程地解 将一个规模为n的问题划分成a个规模为n/b的子问题,其中a和b为正常数,分别递归地解决a个子问题,解每个子问题所需时间为T(n/b),划分原问题和合并子问题的解所需的时间由

    1.1K117发布于 2021-05-14
  • 来自专栏全栈自学笔记

    递归

    1.递归 1.1什么是递归 递归:如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。 简单理解:函数内部自己调用自己, 这个函数就是递归函数 <script> //递归函数:函数内部自己调用自己,这个函数就是递归函数 var num = 1; ​ ,由于递归很容易发生“栈溢出”错误(stack overflow),所以必须要加退出条件return。 1.2利用递归求1~n的阶乘 <script> //利用递归函数求1~n的阶乘1 *2*3*4*..n function fn(n) { if <script> //利用递归函数求斐波那契数列(兔子序列)1、1、2、3、5、8、13、21...

    77810编辑于 2022-05-08
  • 来自专栏Java架构师必看

    递归函数及例题_递归树求解递归式例题

    今天说一说递归函数及例题_递归树求解递归式例题,希望能够帮助大家进步!!! 定义: 一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的。 用递归过程定义的函数,称为递归函数,例如连加、连乘及阶乘等。凡是递归的函数,都是可计算的,即能行的 。 古典递归函数,是一种定义在自然数集合上的函数,它的未知值往往要通过有限次运算回归到已知值来求出,故称为“递归”。它是古典递归函数论的研究对象 。 如果最后一位数是0,则不输出,直接再次调用int_inverts(n/10,flag)函数。如果不是,修改flag的值,先输出,然后在调用int_inverts(n/10,flag)。 解题思路: 递归出口: n=1或n=0 , 直接返回值n; 地推关系: b_shift_d(n) = n%10 + 2*b_shift_d(n/10); 示例1: image.png 示例

    1K40编辑于 2022-07-19
  • 来自专栏Java后端开发博客

    递归

    # 递归 递归应用场景 递归的概念 递归调用机制 递归能解决什么问题 递归需要遵守的重要规则 递归-迷宫问题 迷宫问题 代码实现 递归-八皇后问题 八皇后问题介绍 八皇后问题算法思路分析 代码实现 # 递归应用场景 看个实际应用场景,迷宫问题(回溯),递归(Recursion) # 递归的概念 简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁 # 递归调用机制 我列举两个小案例,来帮助大家理解递归,部分学员已经学习过递归了,这里在给大家回顾一下递归调用机制 打印问题 阶乘问题 使用图解方式说明了递归的调用机制 代码演示 /** * @author 递归用于解决什么样的问题 各种数学问题如:8皇后问题﹐汉诺塔,阶乘问题,迷宫问题,球和篮子的问题(google编程大赛) 各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治算法等. 递归必须向退出递归的条件逼近,否则就是无限递归,出现StackOverflowError,死龟了:) 当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时

    81500编辑于 2022-12-30
  • 来自专栏程序员

    递归

    ,我们有时候会见到一个函数是用它本身定义的,这个时候 我们就称它是递归的。 现代的大多数语言都是支持递归的。递归有两个重要的问题需要 确定。*首先*你必须要有某些基准情况,基准情况不需要递归就能解决;*其次*递归在 回溯的时候一定能朝着基准方向前进。 我们来举个例子说明一下递归: 这段代码是用来求阶乘的。当然这里只是举例子 的时候对数值运算使用了递归,通常对于数值计算不要去使用递归。 这个问题我们也来使用递归求解。 所以我们来用递归写这个程序。

    67310发布于 2019-05-25
领券