数组-递归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); }
复制代码

 

posted @   280887072  阅读(88)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示