1. 基准情形: 必须有某些基准情形,她无需递归即可解出。
2. 不断推进: 对于需要递归求解的情形,每次递归调用都必须使得求解状况朝着基准情形推进。
3. 设计法则: 假设所有的递归调用都能运行。
4. 合成效益法则:在求解一个问题的同一实例时,切勿在不同的递归调用中做重复性工作。
其中第四点在递归的效率中至为关键。这是为什么用递归实现斐波那契数列效率很低,而在二叉树中表现相当优良的原因!
1. 基准情形: 必须有某些基准情形,她无需递归即可解出。
2. 不断推进: 对于需要递归求解的情形,每次递归调用都必须使得求解状况朝着基准情形推进。
3. 设计法则: 假设所有的递归调用都能运行。
4. 合成效益法则:在求解一个问题的同一实例时,切勿在不同的递归调用中做重复性工作。
其中第四点在递归的效率中至为关键。这是为什么用递归实现斐波那契数列效率很低,而在二叉树中表现相当优良的原因!