数组-递归Recursion
定义:方法自己调用自己
1、在实际的开发中,不建议轻易的选择递归,能用for循环while循环代替的,尽量使用循环来做。因为循环的效率高,耗费的内存少。递归耗费的内存比较大,另外递归的使用不当,会导致JVM死掉。(在少数的情况下,不用递归,这个程序没法实现。)。
2、在实际的开发中,的遇到了:StackOverflowError你怎么解决这个问题,可以谈一下你的思路吗?我来谈一下我的个人思路:
栈溢出错误:java.lang.StackOverflowError
- 首先:先检查递归的结束条件对不对。如果递归结束条件不对, 必须对条件进一步修改,直到正确为止。
- 第二步:假设递归条件没问题,怎么办?
- 这个时候需要手动的调整JVM的栈内存初始化大小。 可以将栈内存的空间调大点。(可以调整大一些。)
- 第三步:调整了大小,如果运行时还是出现这个错误, 没办法,只能继续扩大栈的内存大小。
- (java -X)这个可以查看调整堆栈大小的参数
递归实例:
//需求:使用递归,计算5的阶乘,一定要给递归的出口地址 public class RecursionDemo{ public static void main ( String[] args ) { int b =5; System.out.println(); } public static int recursion(int a ){ //一定要给一个出口;不然会出现死循环; if(a ==1){ return 1; } //方法自己调用自己; return a*recursion(a-1); } }
//需求:计算5的阶乘(不使用递归) public calss Demo(){ int a = 5; int ret= 1; for(int i =0;i<5;i++){ ret*=a--; } System.out.println(ret); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix