递归

什么是递归?

递归是指把大问题化成小而相似的问题,然后小问题变化为更小的问题,直到能很容易解决。

递归必要条件

1.迭代前后,两问题之间有明确关系式,且两问题具有相同的形式。
2.递归有结束条件。

func(condition){
  if(end){
    // return solution
  }
  func(lessCondition)
}

举例:计算 n!
关系式:factorial(n!)=n*factorial(n-1)
结束条件:0!=1

public class Factorial {
    int n;
    public static int factorial(int n) throws Exception{
        if(n<0){
            throw new Exception("Negative number error!");
        }
        if(n==0){
            return 1;
        }
        return n*factorial(n-1);
    }
    public static void  main(String[] args) throws Exception {
        System.out.println(factorial(-4));
    }
}

你可能感兴趣的:(递归)