java递归函数例子
时间: 2023-09-05 22:10:43 浏览: 91
以下是一个使用递归的Java示例,用于计算阶乘:
```
public class Factorial {
public static void main(String[] args) {
int n = 5;
int result = factorial(n);
System.out.println(n + "! = " + result);
}
public static int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
}
```
在上面的示例代码中,我们定义了一个递归函数`factorial`,用于计算一个整数的阶乘。当`n`等于0时,该函数返回1,否则它将返回`n`和`factorial(n - 1)`的乘积。
在`main`函数中,我们调用`factorial`函数来计算整数5的阶乘,然后将结果输出到控制台。
输出结果为:5! = 120
相关问题
java递归函数麻烦的例子
以下是一个较为复杂的使用递归的Java示例,用于计算汉诺塔问题:
```
public class HanoiTower {
public static void main(String[] args) {
int n = 3;
hanoi(n, 'A', 'B', 'C');
}
public static void hanoi(int n, char from, char to, char via) {
if (n == 1) {
System.out.println("Move disk 1 from " + from + " to " + to);
} else {
hanoi(n - 1, from, via, to);
System.out.println("Move disk " + n + " from " + from + " to " + to);
hanoi(n - 1, via, to, from);
}
}
}
```
在上面的示例代码中,我们定义了一个递归函数`hanoi`,用于解决汉诺塔问题。该问题涉及到三个柱子和一些盘子,盘子从小到大依次放在柱子上。我们需要将所有盘子从柱子A移动到柱子C,其中柱子B可以作为辅助柱子使用。在移动盘子时,需要遵守以下规则:
1. 每次只能移动一个盘子。
2. 每次移动必须将盘子放在比它大的盘子上面。
在`hanoi`函数中,当`n`等于1时,该函数输出移动盘子的指令。否则,该函数先将`n-1`个盘子从柱子`from`移动到柱子`via`,然后将第`n`个盘子从柱子`from`移动到柱子`to`,最后将`n-1`个盘子从柱子`via`移动到柱子`to`。
在`main`函数中,我们调用`hanoi`函数来解决三个盘子的汉诺塔问题。
输出结果为:
Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
Move disk 3 from A to C
Move disk 1 from B to A
Move disk 2 from B to C
Move disk 1 from A to C
阅读全文