Java 递归
目录
1.A方法调用B方法,很容易理解!
2.递归:A方法调用A方法,就是自己调用自己!
3. 递归的优点:
4. 递归结构包括两个部分:
5. 递归的三个阶段
6. 递归的缺点:
1.A方法调用B方法,很容易理解!
2.递归:A方法调用A方法,就是自己调用自己!
错误使用方式:
运行结果:报错!因为死循环,方法栈溢出,电脑内存不足!不能这样使用递归
3. 递归的优点:
利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
正确的调用方法:
结果:3!=3*2*1=6
代码升级版:
4. 递归结构包括两个部分:
(1)递归头:什么时候不能调用自身方法。如果没有边界,将陷入死循环。
所以使用递归时,需要设置递归边界。如上述代码中f(1)=1就是边界条件。
(2)递归体:什么时候需要调用自身方法。
基数较小,大数据就不要用递归了,程序会崩溃。
5.递归的三个阶段
(1)边界条件
(2)前阶段:当参数没有抵达递归边界(如f(1)=1)的时候,就不停的调用自身。
(3)返回阶段:n*(n-1)
6. 递归的缺点:
方便了程序员,难为了电脑。但是java都是使用栈机制。栈机制相当于一个容器,main方法在最底部,每调用一次方法都要占据容器的一部分容量,main方法执行完后,栈里面就空了。如果调用的方法无限多,一直执行不到main方法,无法结束,该容器的容量就会不足,造成栈溢出的现象,内存崩溃。