递归/分治算法三要素:
定义(状态)
接收什么参数
做了什么事
返回什么值
拆解(方程)如何将参数变小
- 出口(初始化) 什么时候直接return
面试中是否使用Recursion的几个判断条件:
- 面试官是否要求不使用recursion(不确定就像面试官询问)
- 不用recursion是否让问题变得复杂
- recursion深度是否会很深(stack overflow)
- 题目的考点是recursion vs. non-recursion还是考你是否会recursion
记住不要自己判断要和面试官讨论!
分治法有返回值,没有全局变量,可用多线程。而递归因为要用全局变量通常不能用多线程