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 页