Java学习:递归的实操
递归就是直接或者间接调用滋生。需要注意的就是,一定要有一个判断条件让这个死循环结束。
Java学习递归实操训练一:
利用递归算出10的阶乘:
此方法是常规方法:<主要用作和下面用递归的对比>
public static void main(String[] args) { // 递归,十的阶乘 System.out.println(results(10)); } public static int results(int x) { int sum = 1; for (int i = x; i > 1; i--) { sum *= i; } return sum; }
此方法为递归方法:
public static void main(String[] args) { // 递归,十的阶乘 System.out.println(results(10)); } public static int results(int x) { if(x == 1) { return 1; } return results(x - 1) * x; }
Java控制台输出结果为:3628800
利用递归算出100的阶加:
此方法为阶加方法:
public static void main(String[] args) { // 递归,十的阶加 System.out.println(results(100)); } public static int results(int x) { if(x == 0) { return 0; } return results(x - 1) + x; }
Java控制台输出结果为:5050
利用递归玩游戏 - 汉诺塔(相对比较难):
将 柱子A 中的所有套圈转移到 柱子C 上。
思路:利用递归思路,把套圈假设为 n 个,将 n 转换 成 n - 1 的问题:
public static void main(String[] args) { // 递归 game('A', 'B', 'C', 3); } public static void game(char a, char b, char c, int n) { if (n == 1) { System.out.println(a + "=>" + b); return; } // 将第n-1个由A=>C game(a, c, b, n - 1); // 将第n个由A=>B System.out.println(a + "=>" + b); // 将第n-1由C=>B game(c, b, a, n - 1); }
Java控制台输出结果:
A=>BA=>CB=>CA=>BC=>AC=>BA=>B
这就是将3层的汉诺塔移动的步骤。
举报/反馈