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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【程序21】
题目:求1+2!+3!+...+20!的和
程序分析:此程序只是把累加变成了累乘。
public class Prog21{
    public static void main(String[] args){
        long sum = 0;
        for(int i=0;i<20;i++)
        sum += factorial(i+1);
        System.out.println(sum);
    }
    //阶乘
    private static long factorial(int n){
        int mult = 1;
        for(int i=1;i<n+1;i++)
        mult *= i;
        return mult;
    }
}

3 个回复

倒序浏览
你的分长得真快,我辈楷模~~~
回复 使用道具 举报
ylw787442926 发表于 2016-5-27 22:39
你的分长得真快,我辈楷模~~~

我已得道!
回复 使用道具 举报
楼主,互相交流学习一下,,换个写法
  1. import java.util.Scanner;

  2. /**
  3. * 阶乘算法 使用递归思想
  4. *
  5. * @author Administrator
  6. *
  7. */
  8. public class Factorial {

  9.         public static void main(String[] args) {
  10.                 Scanner sc = new Scanner(System.in);
  11.                 int num = sc.nextInt();
  12.                 System.out.println("求" + num + "!的阶乘和");

  13.                 // 输出递归数的和
  14.                 System.out.println(getAllFactorial(num));
  15.         }

  16.         /*
  17.          * 求单个递归数
  18.          */
  19.         public static int getFactorial(int num) {
  20.                 if (num < 1) {
  21.                         return 1;
  22.                 } else {
  23.                         return num * getFactorial(num - 1);
  24.                 }
  25.         }

  26.         /*
  27.          * 所有的递归数求和
  28.          */
  29.         public static int getAllFactorial(int num) {
  30.                 if (num <= 1) {
  31.                         return getFactorial(num);
  32.                 } else {
  33.                         return getFactorial(num) + getAllFactorial(num - 1);
  34.                 }
  35.         }

  36. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马