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

算法——递归(新)

 
阅读更多

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

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


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

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

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



递归总结

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


ps:

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

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


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics