A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请附思路和代码

3 个回复

正序浏览
谢谢,收到了
回复 使用道具 举报
感觉这种题目不是太适合用递归,不过既然你非得要,我也写了个出来。。
这个的输出结果是: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.     }
复制代码


回复 使用道具 举报
阶乘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);

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马