在 Java 中,递归是一种通过方法自身调用自身来解决问题的编程技术
在 Java 中,递归是一种通过方法自身调用自身来解决问题的编程技术。递归通常用于解决可以分解为更小子问题的问题,例如阶乘计算、斐波那契数列、树遍历等。递归的核心在于定义基准条件(Base Case)和递归条件(Recursive Case)。
递归的基本结构
基准条件:递归的终止条件,防止无限递归。
递归条件:将问题分解为更小的子问题,并调用自身。
示例 1:计算阶乘(Factorial)
阶乘是一个经典的递归问题。n! = n * (n-!,直到 n=0 或 n=1 时终止。
java
public class FactorialExample {
public static void main(String[] args) {
int n = 5;
System.out.println("Factorial of " + n + " is: " + factorial(n));
}
public static int factorial(int n) {
// 基准条件:0! 或 1! 等于 1
if (n == 0 || n == 1) {
return 1;
}
// 递归条件:n! = n * (n-1)!
return n * factorial(n - 1);
}
}
输出:
Factorial of 5 is: 120
示例 2:斐波那契数列(Fibonacci Sequence)
斐波那契数列的定义是:F(n) = F(n-1) + F(n-2),其中 F(0) = 0 和 F(1) = 1。
java
public class FibonacciExample {
public static void main(String[] args) {
int n = 10;
System.out.println("Fibonacci(" + n + ") is: " + fibonacci(