首页 > 编程语言 > 详细

java 递归方法

时间:2020-09-01 13:04:33      阅读:40      评论:0      收藏:0      [点我收藏+]

1.什么是递归?

方法自己调用自己

2.当递归时程序没有结束条件,一定会发生:

栈内存溢出错误:Stack Over flowError,所以递归必须要有结束条件

3.递归假设是有结束条件的,就不会发生栈内存溢出吗?

假设结束条件是对的,是合法的,递归也会出现内存溢出,当递归太深的话,导致栈内存不够,因为一直压栈。

4.在实际的开发中,不建议轻易选择递归,能用for循环while循环代替的,尽量代替。因为循环效率高,耗费内存少。递归耗费的内存比较大,另外递归使用不当,会导致jvm死掉。但在极少数的情况下,不用递归这个程序没法实现。

5.在实际开发中,假设真正的遇到了递归,怎么解决?

首先第一步:

  先检查递归的结束条件对不对,如果递归条件不对,必须对条件进一步修改,知道正确为止

第二步:

  假设递归条件没有问题,这是时候需要手动调整JVM的栈内存初始化大小,可以将占内存空间调大点。

  如果运行时还是出现这个错误,只能继续扩大栈的大小。

public class Digui {
    public static void main(String[] args) {
        System.out.println(num(10));
        System.out.println(doSome(10));
    }

    //计算从1+2+3+4+。。。。n的和
    public static int doSome(int n){
        //首先我传入的10,那么下一次传的时候肯定是9,通过n-1来的所以下次调用是doSome(n-1)
        //最后一个是1,那么直接判停条件是1就可以
        if(n==1){
            return 1; //这是第一次出栈
        }
        return  n+doSome(n-1);

    }

    //不用递归算数
    public static int num(int n){
        int sum = 0;
        for (int i = 0;i<=n;i++){
            sum = sum + i;
        }
        return sum;
    }

 

java 递归方法

原文:https://www.cnblogs.com/peiminer/p/13595442.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!