求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
原文:http://admxj.blog.51cto.com/10955090/1721298