美文网首页
31-方法递归调用

31-方法递归调用

作者: c88bc9f9d088 | 来源:发表于2020-10-12 10:15 被阅读0次

        方法的递归调用指的是一个方法自己调用自己的情况,利用递归调用可以解决一些重复且麻烦的问题。在进行方法递归调用的时候一般需要考虑如下几点问题:

    •     一定要设置方法递归调用的结束条件;
    •     每一次调用的过程之中一定要修改传递的参数条件。

    范例:实现一个1~100的累加

    //递归方式:
    public class JavaDemo {
        public static void main(String [] args){
            System.out.println(sum(100));
        }
        public static int sum(int num){
            if(num == 1){
                return 1;
            }
            return num + sum(num - 1);
        }
    }
    //传统方式:
    public class JavaDemo {
        public static void main(String [] args){
            int sum = 0;
            int x = 1;
            while(x<=100){
                sum += x;
                x++;
            }
            System.out.println(sum);
        }
    }
    

        下面对此代码进行一些简单的分析处理:
    · 【第1次执行sum(),主方法执行】return 100 + sum(99);
    · 【第2次执行sum(),sum()递归调用】return 99 + sum(98);
    · … … … … … …
    · 【第99次执行sum(),sum()递归调用】return 2 + sum(1);
    · 【第100次执行sum(),sum()递归调用】return 1;
    整体形式:return 100 + 99 + 98 + … … .. + 2 + 1;递归操作虽然可以简化的调用,但是在实际开发之中,编写的代码可能会很少出现有递归情况。大部分情况下考虑的都只是一些简单的处理逻辑。递归少去使用还有另外一个原因:如果处理不当则会造成内存有溢出。

    范例:计算“1!+2!+3!+4!+5!+… … +90!”
        在进行阶乘计算的时候必须要考虑选择的数据类型,肯定不能够使用int或long,只能够使用double。

    public class JavaDemo {
        public static void main(String [] args){
            System.out.println(sum(90));
            System.out.println(fan(90));
        }
        public static double sum(int num){
            if(num == 1) return 1;
            return fan(num) + sum(num - 1);
        }
        public static double fan(int num){
            if(num == 1){
                return 1;
            }
            return num * fan(num - 1);
        }
    }
    

        实际上有一部分的递归都是可以通过循环来完成,但是如果使用递归要比使用循环结构看起来更加清晰一些。

    相关文章

      网友评论

          本文标题:31-方法递归调用

          本文链接:https://www.haomeiwen.com/subject/akdupktx.html