递归调用太深,可能导致栈溢出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归调用太深,可能导致栈溢出相关的知识,希望对你有一定的参考价值。
参考技术A 栈溢出原因:因为每调用一个方法就会在栈上创建一个栈帧,方法调用结束后就会弹出该栈帧,而栈的大小不是无限的,所以递归调用次数过多的话就会导致栈溢出。而递归调用的特点是每递归一次,就要创建一个新的栈帧,而且还要保留之前的环境(栈帧),直到遇到结束条件。所以递归调用一定要明确好结束条件,不要出现死循环,而且要避免栈太深。
解决方法:
当遇到递归时,可能出现栈空间不足,出现栈溢出,再申请资源扩大栈空间,如果空间还是不足会出现内存溢出oom。
合理的设置栈空间大小;
写递归方法注意判断层次;
能用递归的地方大多数能改写成非递归方式。
以上是关于递归调用太深,可能导致栈溢出的主要内容,如果未能解决你的问题,请参考以下文章