黑马程序员技术交流社区

标题: 递归的程序怎么写的比如求1-100的阶乘用递归思想做 [打印本页]

作者: zhang894095    时间: 2016-7-6 08:30
标题: 递归的程序怎么写的比如求1-100的阶乘用递归思想做
请附思路和代码

作者: aslwq2012    时间: 2016-7-6 17:13
阶乘100!=1*2*3*4……*100.
即需要连续做乘法100次
class Test{
public static void main(String【】args){
       int n =1;
   for(int i =1;i《=100;i++){
          n = n*i;

System.out.println(n);


作者: cat73    时间: 2016-7-6 17:34
感觉这种题目不是太适合用递归,不过既然你非得要,我也写了个出来。。
这个的输出结果是:2432902008176640000
  1.     public static void main(final String args[]) throws Exception {
  2.         new Main()._main(args);
  3.     }
  4.    
  5.     private void _main(final String args[]) throws Exception {
  6.         BigInteger num = factorial(20);
  7.         System.out.println(num);
  8.     }
  9.    
  10.     /**
  11.      * 求 n 的阶乘
  12.      * @param n 要被求阶乘的 n
  13.      * @return n 的阶乘
  14.      */
  15.     public BigInteger factorial(int n) {
  16.         // factorial(n, n - 1)
  17.         return this.factorial(BigInteger.valueOf(n), n - 1);
  18.     }
  19.    
  20.     /**
  21.      * 递归求 n 的阶乘
  22.      * @param num 当前结果
  23.      * @param n n的剩余值(每次减1)
  24.      * @return 当前结果
  25.      */
  26.     private BigInteger factorial(BigInteger num, int n) {
  27.         if(n == 0) {
  28.             return num;
  29.         } else {
  30.             num = num.multiply(BigInteger.valueOf(n));
  31.             return factorial(num, n - 1);
  32.         }
  33.     }
复制代码



作者: zhang894095    时间: 2016-7-6 22:05
谢谢,收到了





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2