递归:直接或者间接地调用自己。比如计算连续数的阶乘,计算规律:n!=(n-1)!*n。

每个递归方法都有一个基值(终止)条件,以防止无线地递归下去,以及由此引发的程序崩溃。

采用递归是因为它可以从概念上简化问题,递归算法结构清晰、可读性强,且容易采用数学归纳法证明算法正确性。然而时间花费和空间花费都比非递归算法更大。

关于递归与分治:

分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题与原问题相同且相互独立。

递归地解这些子问题,然后将各子问题的解合并得到原问题的解。

使用分治思想设计出的算法一般是递归算法,所以分治问题的时间复杂度也可以用递归方程来分析。

关于递归与回溯:

回溯也是一种算法思想,可以用递归实现。通俗点讲回溯就是一种试探,类似于穷举,但回溯有“剪枝”功能。

最新文章

  1. BZOJ1190[HNOI2007]梦幻岛宝石
  2. java 字符流与字节流互转
  3. LR12.53—第1课:构建Vuser脚本
  4. Android 自定义title 之Action Bar
  5. HBase启动和停止命令
  6. selenium Gird
  7. Sherlock and Squares
  8. Activiti工作流(一)之基本操作介绍
  9. hdu 4057--Rescue the Rabbit(AC自动机+状压DP)
  10. 【ASP.NET】DataTable序列化
  11. php中urldecode()和urlencode()起什么作用啊
  12. css之字体的引用
  13. python练习题-day17
  14. Excel组合图表快速制作小功能
  15. flutter图片铺满父框
  16. CSS 实现单、多行文本溢出显示省略号(…)
  17. leetcode150
  18. 教你用DrawLayout 实现Android 侧滑菜单
  19. strings.xml显示html格式
  20. Learn Rails5.2- Scaffolding and REST,flash.now, flash.keep; Access via JSON

热门文章

  1. Task.Run 和 Task.Factory.StartNew 区别
  2. Java并发包--LinkedBlockQueue
  3. Junit加载Spring容器作单元测试
  4. C# List<T> 集合使用
  5. 老男孩Python==基础数据类型考试题
  6. MySQL 使用连接池封装pymysql
  7. 关于matlab GUI 的一些总结
  8. Linux配置Tomcat8080端口 远程无法访问解决办法
  9. NSArray 的创建和遍历
  10. 初次接触webpack