用Java求出1!+2!+3!+...+n!的结果

一、题目:求出1!+2!+3!+...+n!

二、解题思路及相关代码:

1、1!+2!+3!+...+n!

    =1!+2!+3!+...+n!*1

    =1!+2!+3!+...+ (n-1) !*(1+n)

    =1!+2!+3!+...+ (n-2) !*(1+ (n-1)*(1+n) )

    =1!+2!+3!+...+(n-3)!*(1+ (n-2)*(1+(n-1)*(1+n)) )

有以上的规律可知,用循环实现:

public class Sum_n {

	public static Integer sum_n(Integer n){
		Integer result=1;
		for(Integer i=n;i>1;i--){
			result=1+result*i;
		}
		return result;
	}
}


2、由于整型的数剧空间大小是有限的,而如果n很大那么n!就不能直接用result接收,这时我们就利用数组来存储结构的每一位。此时最终代码如下:

package N_zero;

public class Sum_n {

	@SuppressWarnings("unused")
	public static void sum_n(Integer n) {
		// Integer result=1;
		Integer num = 1;
		Integer[] a = new Integer[1000];
		a[0] = 1;
		Integer i, j, k;
		
		
		for (i = 1; i < 1000; i++)
			a[i] = 0;

		for (i = n; i > 1; i--) {
			for (j = 0; j < num; j++) {
				a[j] = a[j] * i;
				
			}
			a[0]=a[0]+1;

			for (k = 0; k < num; k++) {
			
				if (a[k] > 10) {
					
					
					a[k + 1] = a[k + 1] + a[k] / 10;
					a[k] = a[k] % 10;
					if (k + 1 == num)
						num++;
				}

			}
		}
		for(i=num-1;i>=0;i--)
			System.out.print(a[i]);
	}
}

主函数为:

package N_zero;

public class Main {

	public static void main(String[] args){
		Sum_n.sum_n(6);
		}



水木轩昊昊

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
"得分: " " " " " 课程设计报告 "企业工资管理系统 " " "XXX " "班级 "XXXXX " "学号 "XXXXXX " "课程名称 "数据库原理及应用 " "指导教师 " " 201X年X月X日 目 录 一.工资管理系统需分析………………………………… 1.1功能需………………………………………………… 1.1.1功能划分……………………………………… 1.1.2功能描述…………………………………………… 1.2性能需………………………………………………… 1.3数据流图……………………………………………… 二.总体设计………………………………………………… 2.1数据库概念设计………………………………………… 2.2功能模块………………………………………………… 三.系统详细设计…………………………………………… 3.1数据库逻辑设计………………………………………… 3.2各模块功能……………………………………………… 3.2.1职工信息管理系统………………………………… 3.2.2职工工资管理系统………………………………… 3.2.3职工津贴管理系统………………………………… 四.系统实现………………………………………………… 4.1界面截图………………………………………………… 4.1.1主界面及工资基本信息界面…………………… 4.1.2登录界面………………………………………… 4.1.3系统主界面……………………………………… 4.1.4信息录入,修改,删除,查询界面………… 4.2设计代码………………………………………………… 五.实验总结………………………………………………… 1. 需分析 1. 功能需 1.1.1功能划分 (1)、员工信息表;及时反映员工的基本信息 (2)、员工津贴表,反映员工津贴 (3)、员工基本工资表 1.1.2 功能描述 (1)、基本工资的设定 (2)、津贴的设定 (3)、计算出月工资 (4)、录入员工工资信息 (5)、添加员工工资信息 (6)、更改员工工资信息 1.2性能需 此工资管理系统对工资数据精度的计算能在默认情况之下精确到小数点后3位小数, 即是精确到分的计算。但在用户使用过程中,能自行根据实际情况进行小数计算精度的 设定,最大能允许保留小数点后5位的精度。在时间特性上,当用户发出命令请时的服 务器的响应时间、对数据更新处理、工资数据的查询检索等上,同样要系统响应时间 不会超过0.5秒时间。系统支持多种操作系统的运行环境,多不同操作系统,不同文件格 式的磁盘上的数据均能实现信息的互通,及共享。当服务器移植到其他的系统平台,如 :Linux平台下时,同样能和其他的系统进行数据存取同步,不会出现系统之间互不兼容 的情况,系统支持多系统之间的互连互通,系统有巨大的强健性。本课程设计是用Java 语言编写,mysql数据库。 1.3数据流图 根据工资管理要及用户需调查分析,得到以下数据流图 图1.1第一层数据流图 图1.2职工信息的载入 图1.4考勤的信息载入 2.总体设计 2.1数据库概念设计 有了数据流图,用E-R图来说明工资信息管理系统的数据库概念模式,如图 1 n m 图2.1实体之间关系E-R图 2.2功能模块 3.系统详细设计 3.1数据库逻辑设计 将以上E-R转换成如下关系模式 员工(职工号,,密码) 工资(职工号,,基本工资,) 津贴(职工号,,奖金) 其中,标有下划线的字段表示为该数据表的主码,即主关键字。在上面的实体以及实 体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。 工资信息管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表 示在数据库中的一个表。 表一:员工信息表: "列名 "数据类型 "可否取空 "备注说明 " "no " Char ( 8 ) "NOT NULL "职工号(主键) " "name "Char(10) "NOT NULL "职工 " "mi "Smallint "NOT NULL "登录密码 " 表二:基本工资表: "列名 "数据类型 "可否取空 "备注说明 " "no "Char ( 8 ) "NOT NULL "职工号(主键) " "name "Char(10) "NOT NULL "职工 " "Jb "money "NOT NULL "基本工资 " 表四:津贴信息表 "列名 "数据类型 "可否为空 "备注说明 " "no "Char ( 8 ) "NOT NULL "职工号(主键) " "name "Char(10) "NOT NULL "职工 " "Jt "money "NOT NULL "津贴 " 3.2各模块功能 3.2.1职工信息管理系统 功能为:财务部门相关

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值