`
sunqing0316
  • 浏览: 41132 次
  • 性别: Icon_minigender_2
文章分类
社区版块
存档分类
最新评论

算法——递归(新)

 
阅读更多

有关递归的总结之前做过,但是由于只是知识点的简单罗列和堆积,没有自己的思考,没有达到总结的目的,不能将知识编织成网。旧文链接:算法——递归

所以,现在重写一遍,不足之处望读者指正。下面是有关递归的一张思维导图:


这样看的话,比之前那篇的文字清爽了不少,当然,必要的解说描述还是需要的。

递归的定义非常简单:程序调用自身的编程技巧。

由于在递归调用的过程当中,系统为每一层的返回点、局部量等开辟了栈来存储,所以递归的底层实现其实是一个栈。同时需要注意的是递归次数过多容易造成栈溢出。



递归总结

递归算法就是一个函数通过不断对自己的调用而求得最终结果的一种思维巧妙但是开销很大的算法。递归的底层实现其实是一个栈。栈的特点是后进先出,也就是最后进入栈的事件是最先被处理的。它就像一个黑盒子,可以给我们最终的输出结果,却不用知道其内部到底经历了怎样的一个计算过程,其内部就是一个不断分解的过程,将一个复杂的计算不断拆分,变成一个嵌套一个的相同的小零件,这样可以让人很明白的理解计算的过程。


ps:

经过了米老师有关学习方法的会议之后,反观自身,同样存在着类似的问题。归根到底是思想意识上的问题。不少博客总结都是简单的知识点的罗列和堆砌,但是这些都在教材上写着呢,用不着写在博客上。博客是写给自己的,是凝聚着自己思考的文章,如果只是罗列知识点,看书就可以,没有写博客的必要。像那样的博客,写的再多也变不成自己的东西。不思考,要脑子干什么?只长嘴不就行啦?

我们把太多的知识都放诉诸文字,博客都快成了教材副本了,太多的文字让我们不愿意思考,企图一口吃成个胖子,妄想一劳永逸。但是学习本不该是这样的一个过程。学习应该是不断的重复,不断的总结和升华,让思考内化成自己的一部分,流淌在血液中,大脑能够随时被调动起来,那才是高效的学习,才能迸发出智慧。罗列只是第一步,作为人类的我们,总不能死在第一步吧?


分享到:
评论

相关推荐

    算法思想——递归与分治

    算法思想——递归与分治 递归和分治是两种常用的算法思想,它们可以单独使用,也可以结合使用以解决复杂的问题。下面我们将详细探讨这两种算法思想。 递归是一种算法思想,它的基本思想是将一个问题分解成一个或多...

    算法思想——递归与分治.ppt

    递归与分治是计算机科学中两种重要的算法思想,它们在解决复杂问题时起到了关键作用。递归是一种方法,通过函数或程序直接或间接调用自身来解决问题。递归通常包含两个基本要素:边界条件和递归方程。边界条件是递归...

    老师多年积累,很详细全面的算法讲解——递归,分治

    在计算机科学中,递归与分治是两种重要的算法设计策略。它们在解决复杂问题时,能够将大问题分解为小问题,通过解决小问题来推导出大问题的解。接下来,我们将深入探讨这两种方法。 首先,递归是一种函数或程序调用...

    C语言——递归算法

    C语言中递归是重中之重的部分,多数用于求解N!等含有迭代性质的问题,此文档详细介绍了递归算法,实用。

    递归算法——STL

    **递归算法与STL在C++中的应用** 递归算法是编程中一种重要的思想,它通过函数调用自身来解决问题。在C++中,递归可以与标准模板库(STL)结合,以实现更高效、简洁的代码。本文将深入探讨递归算法的应用,特别是...

    全排列——递归排序和字典序列

    ### 全排列——递归排序和字典序列 在计算机科学与编程领域中,全排列是一种重要的算法,它被广泛应用于解决多种问题,如组合优化、密码学等。本文将详细介绍两种实现全排列的方法:递归排列和字典序排列,并通过...

    c语言分治法求众数重数-五大常见算法策略之——递归与分治策略,算法数据结构

    以下我们将探讨几种基于递归和分治策略的算法,包括Fibonacci数列、阶乘计算和小青蛙跳台阶问题。 首先,Fibonacci数列是递归的一个经典例子。递归定义了一个数列,其中每个数是前两个数的和。在C语言中,我们可以...

    RSA基本递归算法——实验用

    RSA基本递归算法,简单,基本,快速,大模运算的基本方法

    N皇后求解问题——递归和回溯方法

    这个问题常用于演示回溯算法和递归在解决约束满足问题中的应用。 首先,我们来探讨递归方法。在C语言中,递归是一种函数调用自身的技术。对于N皇后问题,我们可以定义一个递归函数,该函数尝试在当前行放置皇后,并...

    java算法——汉诺塔经典的递归

    汉诺塔——经典的递归 *实现移动函数 *递归实现汉诺塔函数

    c++编写二叉树遍历(前中后序——递归与非递归)

    本主题主要探讨的是在C++中如何实现二叉树的前序、中序和后序遍历,同时包括递归和非递归两种方法。VS2008是Microsoft Visual Studio的一个版本,它提供了一个强大的开发环境,支持C++编程。 **前序遍历**: 前序...

    算法图解——递归

    递归 函数自己调用自己 在用递归的同时,也可以用while循环实现 递归只是让解决方案更加清晰,并没有性能上的优势,有时候甚至循环的性能更好 “如果使用循环,程序性能可能更高;如果使用递归,程序可能更容易理解...

    八皇后问题——递归解决

    用递归解决八皇后问题的一段代码,专门写了较为详细的注释,本人原创,如有雷同,纯属巧合。

    前端开发——递归函数.docx

    递归函数在处理树形结构、分治算法(如快速排序、归并排序)、深度优先搜索等问题时特别有用。然而,由于每次函数调用都会产生额外的内存开销(用于保存调用栈信息),因此需要注意控制递归深度,避免栈溢出。在某些...

    《Java数据结构和算法》学习笔记(5)——递归 归并排序

    在本篇《Java数据结构和算法》学习笔记中,我们将深入探讨递归和归并排序。递归是一种强大的编程技术,常用于解决复杂问题,而归并排序则是利用递归实现的一种高效排序算法。 首先,让我们理解什么是递归。递归是...

    计算机算法——设计与分析导论(第三版)影印版

    《计算机算法——设计与分析导论》是计算机科学领域中一本经典的教材,主要涵盖了算法设计的基本原理、分析方法以及实际应用。第三版的更新通常会包含新的研究成果、改进的教学方式和更多的实例,以适应不断发展的...

    算法——分治算法原理

    **分治算法**是一种在计算机科学中广泛应用的解决问题的策略,尤其在算法设计领域具有重要地位。它的核心理念是将复杂的问题分解成多个相似的、更小规模的子问题,然后对子问题进行求解,最后将子问题的解合并以获得...

    数据结构与算法——C++版(第3版)源文件

    在《数据结构与算法——C++版(第3版)》中,作者深入浅出地介绍了这些核心概念,并提供了源代码以供学习和实践。 本书可能涵盖了以下几个重要的知识领域: 1. **基础数据结构**:首先,书中会介绍基本的数据结构,...

    递归实现回文判断

    递归实现回文判断是一种直观且有效的算法。通过简单的逻辑判断和递归调用,可以有效地检测一个字符串是否为回文。这种方法不仅适用于字符串,还可以扩展到其他数据结构上,如链表等。然而,在实际应用中,需要注意...

Global site tag (gtag.js) - Google Analytics