1、递归求 N 的阶乘
解析:N!=N*(N-1)!;
求N的阶乘,首先求(N-1)的阶乘,再求(N-2)的阶乘,以此类推,直到找到递归出口N<=1.
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数:");
int N=input.nextInt();
int ret=factorial(N);
System.out.println(N+"的阶乘是"+ret);
}
public static int factorial(int N){
if(N<=1){
return 1;
}
else{
return N*factorial(N-1);
}
}
}
2、递归求 1 + 2 + 3 + … + 10
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数:");
int m=input.nextInt();
int ret=sum(m);
System.out.println(ret);
}
public static int sum(int m) {
if (m == 1) {
return 1;
} else {
return m + sum(m - 1);
}
}
}
3、按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) (递归)
递归出口:当问题的规模小到个位数。
解析:由题意得:1234打印顺序是1,2,3,4。所以打印4之前应该把1,2,3打印完;打印3之前应该把1,2打印完;打印2之前应该把1打印完;1可以直接打印。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数:");
int m=input.nextInt();
print(m);
}
public static void print(int m) {
if (m >9) {
print(m/10);
}
System.out.println(m%10);;
}
}