1

解决递归问题的六种方法

 5 months ago
source link: https://www.jdon.com/71731.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

解决递归问题的六种方法

许多软件工程师在编程面试中遇到递归问题。 如果你想成为善于解决递归问题,学习这6个模板:

1.迭代
任何可以用循环解决的问题也可以用递归解决。

有时候递归提供了一个更简洁和优雅的解决方案,即使效率较低。

范例:
- 按逆序遍历链表 

2.子问题
模式侧重于定义和解决问题的较小版本。

标准的策略是从输入中删除一些内容。

示例如下:

  • - 查找字符串是否为回文
  • - 找到所有爬楼梯的方法 

3.选择
有些问题可以通过以下方式解决:

  • ·查找某些输入元素的所有组合
  • ·选择与给定条件匹配的组合

范例:
- 找到所有可能的方法来交错2字符串 

4.顺序
此模式类似于选择,但元素组合的顺序很重要。

这些问题可以通过以下方式解决:

  • ·找到所有的排列
  • ·过滤它们

范例:
- 找到所有的N位数的数字总和为一个目标数 

5.分而治之
此模式侧重于将问题拆分为多个子问题:

  • ·每个子问题单独解决
  • ·组合解决方案以获得结果

范例:
- 找到所有的方法来括号一个表达式

6.深度优先搜索
此模式在树或图中查找路径:

  • ·从一个节点开始
  • ·递归访问每个节点的邻居
  • ·避免重复循环

范例:
- 在一个矩阵中从左上角到右下角找出乘积最大的路径 


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK