public class Demo_Digui {

   /**

    * @param args

    * 递归:方法自己调用自己

    * 5!

    * 5 * 4 * 3 * 2 * 1

    * 

    * 5 * fun(4)(代表4!)

    *    4 * fun(3)(代表3!)

    *           3 * fun(2)(代表2!) 

    *                 2 * fun(1)(代表1!)

    * 递归的弊端:不能调用次数过多,容易导致栈内存溢出

    * 递归的好处:不用知道循环次数

    * 

    * 构造方法是否可以递归调用?

    * 构造方法不能使用递归调用

    * 

    * 递归调用是否必须有返回值?

    * 不一定(可以有,也可以没有)

    */

   public static void main(String[] args) {

      /*int result = 1;

      

      for(int i = 1; i <= 5; i++) {

         result = result * i;

      }

      

      System.out.println(result);*/

      System.out.println(fun(6000));

   }

   

   public static int fun(int num) {

      if(num == 1) {

         return 1;

      }else {

         return num * fun(num - 1);

      }

   }

}