7.23Java之递归练习

7.23Java之递归练习

需求

使用递归计算1 - n之间的和

实例图

package PracticeReview.Recursion;

/*
使用递归计算1 - n之间的和
*/
public class RecursionDemoNo2 {
   public static void main(String[] args) {
       int s = sum(3);
       System.out.println(s);
  }

   /*
   定义一个方法,使用递归j计算1-n之间的和
   1+2+3+...+n
   n+(n-1)+(n-2)+...+1
   已知:
   最大值:n
   最小值:1
       使用递归必须明确的条件:
       1、递归的结束条件
           获取到1的时候结束
       2、递归的目的
           获取下一个被加的数字(n-1)
    */
   public static int sum(int n){
       /*获取到1的时候结束*/
       //判断
       if (n==1){
           return 1;
      }

       /*获取下一个被加的数字*/
       return n + sum(n-1);
  }
}
方法执行原理分析图

需求

使用递归求n得阶乘:
n! = n * (n-1) * (n-2) * (n-3) * ... * 3 * 2 * 1

实例图

package PracticeReview.Recursion;

/**
* 需求:
* n! = n * (n-1) * (n-2) * (n-3) * ... * 3 * 2 * 1
* 已知:
* 起始值:n
* 结束值:1
* 递归的目的:
* 获取下一个被乘的数字
* @since JDK 1.8
* @date 2021/07/23
* @author Lucifer
*/
public class RecursionDemoNo3 {
   public static void main(String[] args) {
       int jc = factorial(5);
       System.out.println(jc);
  }

   /**
    * 阶乘的方法
    * @param i
    * @return
    */
   public static int factorial(int i){
       //判断是否结束
       if (i==1){
           return i;
      }

       //获取下一个书
       return i * factorial(i-1);
  }
   /*
   使用递归明确两点:
   1、递归的结束条件
   2、递归的目的
   调用方法,方法的主题不变,参数改变
    */
}

 

It's a lonely road!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/15050244.html