2024年4月1日发(作者:)
java递归简单案例
(原创实用版)
目录
1.递归的定义与概念
中递归的实现方式
3.递归案例:斐波那契数列
4.递归案例:汉诺塔
5.递归的优缺点
正文
【1.递归的定义与概念】
递归是一种函数调用自身的技术。在 Java 编程中,递归是一种解决
问题的方法,通过将问题分解为更小的子问题来实现。递归函数在执行过
程中,会直接或间接地调用自身,直到满足递归结束的条件,然后从最后
一层递归开始,依次返回结果,最终得到整个问题的解。
【 中递归的实现方式】
在 Java 中,实现递归的方法非常简单。只需在函数中调用自身即可。
以下是一个简单的递归实现:
```java
public class Main {
public static void main(String[] args) {
n(factorial(5));
}
public static int factorial(int n) {
第 1 页 共 4 页
if (n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
}
```
【3.递归案例:斐波那契数列】
斐波那契数列是一个经典的递归案例。斐波那契数列的定义是:第一
个数和第二个数都是 1,从第三个数开始,每个数都是前两个数之和。递
归解法如下:
```java
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
(fibonacci(i) + " ");
}
}
public static int fibonacci(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
第 2 页 共 4 页
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
}
```
【4.递归案例:汉诺塔】
汉诺塔问题是另一个经典的递归案例。问题描述是:有一个汉诺塔,
每次可以移动一个盘子,要求将所有盘子从一根柱子移动到另一根柱子,
且每次移动必须满足:盘子不能放在比它小的盘子下面,且不能直接从一
根柱子移动到另一根柱子。递归解法如下:
```java
public class Main {
public static void main(String[] args) {
hanoi(3);
}
public static void hanoi(int n) {
if (n == 1) {
n("Move disk 1 to pillar 3");
} else if (n == 2) {
n("Move disk 1 to pillar 2; Move
disk 2 to pillar 3");
} else if (n == 3) {
n("Move disk 1 to pillar 2; Move
第 3 页 共 4 页
disk 2 to pillar 1; Move disk 3 to pillar 3");
} else {
hanoi(n - 1);
n("Move disk " + n + " to pillar
3");
hanoi(n - 1);
}
}
}
```
【5.递归的优缺点】
递归的优点是可以将复杂的问题分解为更小的子问题,使得代码更易
于理解和编写。递归的缺点是会导致函数调用过多,从而造成栈溢出的风
险。
第 4 页 共 4 页


发布评论