Java递归
-
A方法调用B方法,我们很容易理解
-
递归就是:A方法调用A方法!就是自己调用自己
-
利用递归可以用简单的程序来解决一些复杂的问题,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合
-
递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环
- 递归体:什么时候需要调用自身方法
public class Demo05 {
//递归思想
public static void main(String[] args) {
System.out.println(factorial(5));
}
//阶乘
public static int factorial(int a){
if (a==1){ //递归头
return 1;
}else{ //递归体
return a*f(a-1);
}
}
}
递归三要素:
- 一定有一种可以退出程序的情况;
- 总是在尝试将一个问题化简到更小的规模
- 父问题与子问题不能有重叠的部分
递归算法的一般形式:
func( mode){
if(endCondition){ //递归出口
end;
}else{
func(mode_small) //调用本身,递归
}
}
递归的过程

我们会惊奇的发现这个过程和栈的工作原理一致,递归调用就是通过栈这种数据结构完成的。整个过程实际上就是一个栈的入栈和出栈问题。然而我们并不需要关心这个栈的实现,这个过程是由系统来完成的。
其实递归算法很简单,简单点就是自己调用自己的方法,有条件判断什么时候停止!
此学习资料参考于:

浙公网安备 33010602011771号