递归算法就是在程序中不断反复调用自身来达到求解问题的方法。这里的重点是调用自身,这就要求待求解问题能够分解为相同问题的一个子问题。这样,通过多次递归调用,便可以完成求解。
递归调用是一个方法在其方法体内调用其自身的方法调用方式。这种方法也称为"递归方法"。在递归方法中,主调方法又是被调方法。执行递归方法将反复调用其自身。每调用一次就进入新的一层。
方法的调用分为两种情况:直接递归和间接递归。
- 直接递归,即在方法中调用方法本身。
- 间接递归,即间接地调用一个方法,如A方法调用B方法,B方法又调用方法A。间接递归用得不多。
非递归形式比递归形式运行速度要慢一些。这是因为附加的方法调用增加了时间开销。
递归算法常用于一些数学计算,或者有明显的递推性质的问题。理解递推最常用的一个例子是求阶乘法:
import java.util.Scanner;
public class Solution {
public static int fact(int n) {
if (n <= 1) {
return 1;
} else {
return n * fact(n - 1);
}
}
public static void main(String[] args) {
System.out.println("请输入要求阶乘的一个整数:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println(n + "的阶乘结果为:" + fact(n));
}
}
![](https://img.haomeiwen.com/i2998436/08295e3dc381b46c.png)
网友评论