递归方法:一个方法体内调用它本身(顾名思义递出去回来)
*方法递归包含了一种隐形的循环,它会重复执行某段代码,这种重复执行无需循环控制
*递归一定要向已知方向递归,否则变成无穷递归死循环了
用有限的语句来定义对象的无限集合
package text;
public class s6 {
public static void main(String[] args) {
int N = 6;
for (int i = 0; i <= N; i++) {
int fact = factorial(i);
System.out.println(i + " 阶乘为" + fact);
}
}
//递归法
private static int factorial(int i) {
if (i < 1) {//结束条件
return 1;
} else {//递归条件
return factorial(i - 1) * i;
}
}
}
package Array1;
public class array3{
public static void main(String[]args) {
int[]A= {9,10,21,32,43,54,65,76,87,98};
int max=A[0];
for(int i=0;i<A.length;i++) {
if(A[i]>max) {
max=A[i];
}
}
System.out.println("数组A的最大值为: "+max);
}
}
```java
package text;
public class RecursionTest {
public static void main(String[] args) {
// 计算1-100之间的所有自然数之和
// 循环法
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println(sum);
//递归法
RecursionTest test = new RecursionTest();
int sum1 = test.getSum(100);
System.out.println(sum1);
}
public int getSum(int n) {
if(n==1) {
return 1;
}else {
return n+getSum(n-1);
}
}
//1-n之间所有自然数的乘积:n!
public int getSum1(int n) {
if(n==1) {
return 1;
}else {
return n*getSum1(n-1);
}
}
}
package text;
import java.util.Scanner;
public class s7{
public static void main(String[]args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(F( n));
}
private static int F(int n) {
if(n==1) {
return 1;
}else {
return n*F(n-1);
}
}
}