package tst;
import java.util.Scanner;
public class power {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
while ( true ) {
System.out.print( "please input a number : " );//这里就选择不换行的了
Scanner sc = new Scanner(System.in);
int getSc = sc.nextInt();
int tmp = getSc;
if ( getSc == 0 || getSc == 1) { //0! and 1! is 1
System.out.println(1);
continue;
} else if ( getSc == 2 ) { // 2! = 2 * 1 = 2
System.out.println( getSc * ( getSc - 1 ) );
continue;
} else if ( getSc > 2 ) { //n! = n * ( n - 1) * ... * 1
int tmpGetSum = 0;
/*
* 这个地方解释好难,主要是为了实现 n! + ( n - 1 )! + ... + 1!
* 首先是求阶乘,用了函数,比如输入5,会把 5! 和 4!的和求出来保存
* 接着把要循环的值减2,也就是 3! 和 2!,最后到1;
* 这个地方应该不太好,不过毕竟是自己想的,好难想出问题在哪,应该是0的问题,
* 所以后面有一个求getSum的返回值,如果小于0就返回0,机智
*/
for ( int i = 1; i < tmp; i++) {
tmpGetSum += getSum( getMult ( getSc ), getMult ( getSc - 1) );
getSc = getSc - 2;
}
System.out.println( "tmpGetSum : " + tmpGetSum);
continue;
} else {
System.out.println( "Wrong numer , please try again !");
continue;
}
}
}
final static int getMult ( int getVal ) { //简单求阶乘函数
int tmp = getVal;
int reVal = getVal;
for ( int i = 0; i < tmp - 1; i++) {
reVal *= ( i + 1 );
}
return reVal;
}
final static int getSum ( int getVal1, int getVal2 ) { //最简单的莫过于 return getVal1 + getVal2
int tmp = getVal1;
int reVal = getVal2;
int zero = 0;
int tmpRe = tmp + reVal;
if ( tmpRe < 0) { //出现过小于0的情况,所以机智的调成返回0就 ok了
return zero;
}
return tmpRe;
}
import java.util.Scanner;
public class power {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
while ( true ) {
System.out.print( "please input a number : " );//这里就选择不换行的了
Scanner sc = new Scanner(System.in);
int getSc = sc.nextInt();
int tmp = getSc;
if ( getSc == 0 || getSc == 1) { //0! and 1! is 1
System.out.println(1);
continue;
} else if ( getSc == 2 ) { // 2! = 2 * 1 = 2
System.out.println( getSc * ( getSc - 1 ) );
continue;
} else if ( getSc > 2 ) { //n! = n * ( n - 1) * ... * 1
int tmpGetSum = 0;
/*
* 这个地方解释好难,主要是为了实现 n! + ( n - 1 )! + ... + 1!
* 首先是求阶乘,用了函数,比如输入5,会把 5! 和 4!的和求出来保存
* 接着把要循环的值减2,也就是 3! 和 2!,最后到1;
* 这个地方应该不太好,不过毕竟是自己想的,好难想出问题在哪,应该是0的问题,
* 所以后面有一个求getSum的返回值,如果小于0就返回0,机智
*/
for ( int i = 1; i < tmp; i++) {
tmpGetSum += getSum( getMult ( getSc ), getMult ( getSc - 1) );
getSc = getSc - 2;
}
System.out.println( "tmpGetSum : " + tmpGetSum);
continue;
} else {
System.out.println( "Wrong numer , please try again !");
continue;
}
}
}
final static int getMult ( int getVal ) { //简单求阶乘函数
int tmp = getVal;
int reVal = getVal;
for ( int i = 0; i < tmp - 1; i++) {
reVal *= ( i + 1 );
}
return reVal;
}
final static int getSum ( int getVal1, int getVal2 ) { //最简单的莫过于 return getVal1 + getVal2
int tmp = getVal1;
int reVal = getVal2;
int zero = 0;
int tmpRe = tmp + reVal;
if ( tmpRe < 0) { //出现过小于0的情况,所以机智的调成返回0就 ok了
return zero;
}
return tmpRe;
}
}
运行结果:
please input a number : 5
tmpGetSum : 153
please input a number : 7
tmpGetSum : 5913
please input a number :