zoukankan      html  css  js  c++  java
  • Java递归调用

    6.递归调用

    方法的递归调用就是方法自身调用自身。

    以下程序因为递归没有结束的条件,所以一直压栈,没有弹栈,导致栈内存溢出错误!所以递归必须要有结束条件。

    public class RecursionTest01{

           //入口

           public static void main(String[] args){

                  m1();

           }

           public static void m1(){

                  m1(); //java.lang.StackOverflowError

           }

    }

    【例题1】:不使用递归,计算1-N的求和。

    public class RecursionTest02{

           public static void main(String[] args){

                  int n = 5;

                  //调用该方法完成1-N的求和

                  int retValue = method1(n);

                  System.out.println(retValue); //15

           }

           //该方法完成1-N的求和.

           public static int method1(int n){

                  int sum = 0;

                  for(int i=0;i<=n;i++){

                         sum += i;

                  }

                  return sum;

           }

    }

    【例题2】:使用递归,计算1-N的求和。

    public class RecursionTest03{

           public static void main(String[] args){

                  int n = 5;

                  //调用该方法完成1-N的求和

                  int retValue = method1(n);

                  System.out.println(retValue); //15

           }

          

           //该方法完成1-N的求和.

           //1+2+3+4+5+...N

           public static int method1(int n){

                  if(n==1){

                         return 1;

                  }else{

                         return n + method1(n-1); }}}

    【练习】:计算N的阶乘。两种方式:使用递归和不使用递归。

    public class RecursionTest04{

           public static void main(String[] rgs){

                  System.out.println(method1(5)); //120

           }

           public static int method1(int n){

               //不使用递归

                  int result = 1;

                  for(int i=1;i<=n;i++){

                         result *= i;

                  }

                  return result;

               //使用递归

                  if(n==1){

                         return 1;

                  }else{

                         return n * method1(n-1); }

           }

    }

     

  • 相关阅读:
    DVWA的安装过程
    《论美国的民主》读后感
    《C专家编程》读书笔记(三)
    vue中插槽(slot)的使用
    element-ui中el-table表格的使用(如何取到当前列的所有数据)
    element-ui遮罩层el-dialog的使用
    移动端开发网页时,有部分字体无故变大或变小
    Meathill的博客地址
    css让文字,字母折行
    vue-element-admin平时使用归纳
  • 原文地址:https://www.cnblogs.com/superjishere/p/11780481.html
Copyright © 2011-2022 走看看