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层的汉诺塔移动的步骤。

举报/反馈
相关文章