有关递归的总结之前做过,但是由于只是知识点的简单罗列和堆积,没有自己的思考,没有达到总结的目的,不能将知识编织成网。旧文链接:算法——递归
所以,现在重写一遍,不足之处望读者指正。下面是有关递归的一张思维导图:
这样看的话,比之前那篇的文字清爽了不少,当然,必要的解说描述还是需要的。
递归的定义非常简单:程序调用自身的编程技巧。
由于在递归调用的过程当中,系统为每一层的返回点、局部量等开辟了栈来存储,所以递归的底层实现其实是一个栈。同时需要注意的是递归次数过多容易造成栈溢出。
递归总结
递归算法就是一个函数通过不断对自己的调用而求得最终结果的一种思维巧妙但是开销很大的算法。递归的底层实现其实是一个栈。栈的特点是后进先出,也就是最后进入栈的事件是最先被处理的。它就像一个黑盒子,可以给我们最终的输出结果,却不用知道其内部到底经历了怎样的一个计算过程,其内部就是一个不断分解的过程,将一个复杂的计算不断拆分,变成一个嵌套一个的相同的小零件,这样可以让人很明白的理解计算的过程。
ps:
经过了米老师有关学习方法的会议之后,反观自身,同样存在着类似的问题。归根到底是思想意识上的问题。不少博客总结都是简单的知识点的罗列和堆砌,但是这些都在教材上写着呢,用不着写在博客上。博客是写给自己的,是凝聚着自己思考的文章,如果只是罗列知识点,看书就可以,没有写博客的必要。像那样的博客,写的再多也变不成自己的东西。不思考,要脑子干什么?只长嘴不就行啦?
我们把太多的知识都放诉诸文字,博客都快成了教材副本了,太多的文字让我们不愿意思考,企图一口吃成个胖子,妄想一劳永逸。但是学习本不该是这样的一个过程。学习应该是不断的重复,不断的总结和升华,让思考内化成自己的一部分,流淌在血液中,大脑能够随时被调动起来,那才是高效的学习,才能迸发出智慧。罗列只是第一步,作为人类的我们,总不能死在第一步吧?
分享到:
相关推荐
算法思想——递归与分治 算法思想——递归与分治
一种新型径向基函数神经网络学习算法 ———递归正交最小二乘法(ROLS)
算法设计,PPT,算法分析与设计,老师多年积累,很详细全面的算法讲解——递归,分治
c语言分治法求众数重数-五大常见算法策略之——递归与分治策略,算法数据结构 五大常用算法
该料详细介绍了算法中的一种典型思想———递归与分治
C语言中递归是重中之重的部分,多数用于求解N!等含有迭代性质的问题,此文档详细介绍了递归算法,实用。
RSA基本递归算法,简单,基本,快速,大模运算的基本方法
实现了汉诺塔的递归算法,求取最大公约数等问题,还有输出数字的不同进制等功能,c++控制台应用程序
全排列算法有两个比较常见的实现:递归排列和字典序排列。 (1)递归实现 从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。 (2)字典...
汉诺塔——经典的递归 *实现移动函数 *递归实现汉诺塔函数
N皇后问题求解,分别是递归方法实现和非递归方法实现,后者采用回溯方法,C语言实现的
递归 函数自己调用自己 在用递归的同时,也可以用while循环实现 递归只是让解决方案更加清晰,并没有性能上的优势,有时候甚至循环的性能更好 “如果使用循环,程序性能可能更高;如果使用递归,程序可能更容易理解...
用递归解决八皇后问题的一段代码,专门写了较为详细的注释,本人原创,如有雷同,纯属巧合。
设计递归子程序算法,处理各个非终结符。在语法分析的过程中以缩进格式打印语法分析树。将实现词法分析函数scan( )作为子程序,进行测试。
C语言数据结构算法——孩子兄弟链树(注释完整:创建、销毁、叶子结点赋值、求树高)
NULL 博文链接:https://yuan.iteye.com/blog/308778
东北大学2022编译原理实验课——递归下降分析简单算术表达式(C++) 【问题描述】 1.设计简单算数表达式语法分析器算法;(用递归下降分析来实现) 2.编写代码并上机调试运行通过。 【输入形式】 简单算数表达式 ...
递归实现回文判断
图的最小生成树 利用栈来实现单链表的逆序 Bresenham高效画线算法 约瑟夫环问题 二叉树的集合操作 递归算法的应用 ...
帕斯卡(杨辉)三角 * 问题:取N阶的杨辉三角并显示 * 分析:三角形边上数都是... * f(row,col)=1(col=1或row=col),也就是递归的停止条件。 * f(row,col)=f(row-1,col-1)+f(row-1)+f(col),也就是上一行相邻两个数的和