前言:
先给大家简单说一下递归这个东西
递归:
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
我们先简单回顾下递归
代码部分
package com.itjy.recursion;
/**
* 回顾递归
* @author dell
*
*/
public class RecursionTest {
public static void main(String[] args) {
// 通过打印问题,回顾递归的调用机制
test(4);
try {
System.out.println(factorial(0));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
// 打印问题。
public static void test(int n) {
if(n > 2) {
test(n - 1);
}//else {
System.out.println("n="+n);
// }
}
// 阶乘问题
public static int factorial(int n) {
if(n==0) {
throw new RuntimeException("傻逼式输入");