1 递归
把递归想成方法栈,后进先出。递:一层一层深入(依次执行前置代码),直到到达递归终止条件(一定要有终止条件,不再执行自己),归:再从底层一层一层返回(依次执行后置代码)。
快速排序:典型的递归前置思想,先执行取中分边,再左右向下递归
归并排序:典型的递归后置思想,先取中左右向下递归,再从最底层一层层向上执行归并
2 复用避免重复计算
递归时可以把各步结果保存,可以复用。 斐波那契数列就是典型例子
3 斐波那契数
//递归方式实现斐波那契数
public static long rec_fib(long i) {
long result = 0;
if(i <= 0) return 0; //递归终止
if(i == 1 || i == 2) //递归终止
result = 1;
else {
System.out.println("递归前置");
result = rec_fib(i-1) + rec_fib(i-2);
System.out.println("递归后置");
}
return result;
}