递归算法深入浅出一:递归理论概述和常见递归算法罗列

前言

  递归可以说是很多基础程序员甚至有一定开发能力程序员包括我这个小菜的痛点痒点!但有一句话很经典:

出来混,迟早是要还的!
你现在跳过的知识,以后还是要补上的(除非它被更新换代了)!

  所以呢,我也得跟着学递归了^_\^
  因此也将我自己的一些总结写出来和大家分享下,有意见建议的朋友麻烦高抬贵手留下留言,毕竟多个意见多份参考,谢谢!


此文老猫原创,转载请加本文连接:http://blog.csdn.net/nthack5730/article/details/65537530
更多有关老猫的文章:http://blog.csdn.net/nthack5730


什么是递归

  简单的说:递归就是程序不断调用自身,递归方法就是方法直接或间接调用自身的方法,递归是一个很有用的程序设计技术!

递归有两大特点:

  • 反复执行的过程(调用自身)
  • 结束反复执行过程的条件(方法跳出点)

递归缺点:

耗内存,耗资源,不易阅读!不易阅读!不易阅读!(重要的事情说三遍)


递归的设计

  一个递归调用可以导致更多的递归调用,因为这个方法继续把每个子问题分解成新的子问题,要终止一个递归方法,问题最后必须达到一个终止条件。当问题达到这个终止条件时,就将结果返回给调用者。然后调用者进行计算并将结果反悔给自己的调用者。这个过程持续进行,知道结果传给原始的调用者位为止。

递归的设计通常包含两部分:

1.递归的定义:将大问题转化为小问题求解。

  递归定义就是对问题分解,将一个问题分解为规模较小的问题并用相同的程序去解决。

2.递归的终止条件:跳出递归,返回最小问题的解。

  递归终止条件通常就是得出最小问题的解,并返回给他的调用者。


使用递归解决问题

所有的递归程序都具有一下特点:

  • 这些方法使用if-else或switch语句来引导不同的情况
  • 一个或多个基础情况(最简单的情况)用来终止递归。
  • 每次递归都会简化原始问题,让它不断接近基础情况,知道它变成基础情况(最小问题)为止。
      
    通常,要使用递归解决问题,就要将这个问题分解为子问题。每个子问题几乎与原始问题一样的,只是规模小一些。可以应用相同的方法(程序)来递归解决子问题。

递归常见算法和应用:

  我会通过不断的学习,与大家分享递归常见算法和应用,会慢慢在这篇文章里面补齐链接:
  1.递归算法深入浅出二:递归n的阶乘
  2.递归算法深入浅出三:递归求Fibonacci斐波那契数列
  3.递归算法深入浅出四:递归判断回文串以及递归辅助方法
  4.递归算法深入浅出五:深度搜索寻找图最短路径

当然,也少不了大家点,我才能更有动力哟!


此文老猫原创,转载请加本文连接:http://blog.csdn.net/nthack5730/article/details/65537530
更多有关老猫的文章:http://blog.csdn.net/nthack5730


猜你喜欢

转载自blog.csdn.net/nthack5730/article/details/65537530