方法递归
2.1、需要理解什么是方法递归?
方法自身调用自身。
2.2、使用递归的时候,必须添加结束条件,没有结束条件,会发生栈内存溢出错误。
StackOverflowError
原因:一直压栈,没有弹栈,栈内存不够用。
2.3、会画出递归方法的内存结构图。
递归的过程当中可以将图画出来。
2.4、能够使用循环代替递归的尽量使用循环,循环的执行耗费内存少一些,
递归耗费内存相对多一些,另外递归使用不当很容易内存溢出,JVM停止工作。
当然,只有极少数情况下,只能用递归,其它代码解决不了问题。
2.5、当递归有结束条件,并且结束条件合法的时候,就一定不会内存溢出吗?
也不一定。可能递归的太深了。
2.6、分享了一些递归方面的经验
在实际的开发中遇到递归导致的栈内存溢出错误是怎么办?
第一步:先检查结束条件是否正确。
第二步:如果正确,可以调整JVM的栈内存大小。(java -X)
我们要一味地将变量缩减吗?代码缩减吗?这样好吗?
public class Test{
public static void main(String[] args){
/*
int i = 100;
System.out.println(i);
*/
System.out.println(100);
boolean flag = test();
if(flag){
...
}
// 缩减之后的
if(test()){
....
}
}
public static boolean test(){
return true;
}
}
太计较变量的数量会有什么后果呢?(运行效率不会低)
后果1:代码的可读性差。
后果2:可读性差也可以会牵连到代码的开发效率。
其实计算机内存不差这个。。。。。。
注意:在编码过程中,有一些变量名是必须要定义的。
因为在后面代码中还需要访问这个数据。重复的访问这个
数据。
不使用递归: 使用递归: | |||
![]() | |||