需求
使用递归计算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、递归的目的
调用方法,方法的主题不变,参数改变
*/
}