递归
三种情况
- 递归定义的数学函数
- 具有递归特性的数据结构
- 可以递归求解的问题
分治法:对于一个较为复杂的问题,能够分解为几个相对简单的且解法相同或类似的子问题求解。
三个条件:
- 能将一个问题转换为一个新问题,而新问题与原问题的解法相同或类同,不同的仅是处理的对象,且这些处理的对象是有规律的。
- 可以通过转换是问题简化
- 必须有一个明确的递归出口,或者边界,不能无限循环
递归问题的一般形式
void p(参数表){
if (递归结束条件) 可直接求解的步骤;---基本项
else p(较小的参数);----归纳项
}
例如:求阶乘
long Fact(long n){
if(n==0) return 1;
else return n*Fact(n-1);