首页 > 其他 > 详细

求10!+11!+…+20! 的值

时间:2015-12-10 09:37:03      阅读:392      评论:0      收藏:0      [点我收藏+]

求10!+11!+…+20! 的值

package com.admxj.factorial;
/*
 * 2015年12月9日20:57:14
 * 求和10!+11!+12!+13!***20!
 */
public class Day02 {
	public static void main(String[] args) {
		//定义起始变量和结束变量
		int begin = 10;
		int end = 20;
		long result = factorial_1(begin, end);
		System.out.println(ouputStr(begin,end)+result);
	}
	/*
	 * 阶乘求和
	 */
	public static long factorial_1(int begin, int end){
		if(begin >end){
			begin = begin^end;
			end = begin^end;
			begin = begin^end;
		}
		long sum = 0;
		for(int i = begin; i <= end; i++){
			sum = sum + factorialRecursion(begin);
			begin++;
		}
		return sum;
	}
	/*
	 * 求阶乘
	 */
	public static long factorialRecursion(int n){
		if(n == 1){
			return 1;
		}else{
			return n*factorialRecursion(n-1);
		}
		
	}
	/*
	 * 获取字符串10!+11!+12!+13!***20!
	 */
	public static String ouputStr(int begin, int end){
		if(begin >end){
			begin = begin^end;
			end = begin^end;
			begin = begin^end;
		}
		String str = "";
		if(begin == end){
			return str+ begin + "!=";
		}else{
			return str+ begin + "!+"+ouputStr(++begin, end);
		}
	}
}

第二种优化后

package com.admxj.factorial;
/*
 * 2015年12月9日21:31:01
 * 求和10!+11!+12!+13!***20!
 */
public class Day02Lin {
	public static void main(String[] args) {
		int begin = 10;
		int end = 20;
		System.out.println(factorial(begin,end));
	}
	public static long factorial(int begin, int end){
		long result = 0;
		for(;begin <= end; begin++){
			long sum = 1;
			for(int j = 1; j <= begin; j++){
				sum *=j;
			}
			result += sum;
		}
		return result;
	}
}


本文出自 “生命不息,折腾不止” 博客,请务必保留此出处http://admxj.blog.51cto.com/10955090/1721298

求10!+11!+…+20! 的值

原文:http://admxj.blog.51cto.com/10955090/1721298

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!