java学习笔记:方法递归

方法递归

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:可读性差也可以会牵连到代码的开发效率。

其实计算机内存不差这个。。。。。。

注意:在编码过程中,有一些变量名是必须要定义的。

因为在后面代码中还需要访问这个数据。重复的访问这个

数据。

不使用递归:

使用递归:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值