递归:递归就是一个程序或函数在其中定义或说明有之间或者间接调用自身的一种方法
前言
递归作为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
一、递归是什么?
递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。
二、递归的简单问题
1.打印问题
代码如下(示例):
public class Recursion {
public static void main(String[] args) {
T t1 = new T();
t1.test(4);
}
}
class T {
public void test(int n) {
if (n > 2) {
test(n - 1);//开始递归
}
System.out.println("n=" + n);
}
}
效果图:
2.阶乘问题
即n!=1×2×3×...×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
代码如下(示例):
import java.util.Scanner;
public class Factorial {
//main 方法
public static void main(String[] args) {
//键盘录入
Scanner scanner=new Scanner(System.in);
System.out.println("输入任意一个数:");
int num = scanner.nextInt();
// 调用方法 定义变量接收阶乘返回值的乘积
int fac = factorial(num);
//打印结果
System.out.println(num + "的阶乘是" + fac);
}
// 定义方法
private static int factorial(int num) {
//开始递归
if (num == 1) {
return 1;
}else {
return num * factorial(num - 1);
}
}
}
效果图: