一. 公共部分, 这里假设由用户输入数字
public class Factorial {
public static void main(String[] args) {
System.out.print("请输入一个正整数: ");
try {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
int a = Integer.parseInt(br.readLine());
System.out.println(String.valueOf(jieshen(a)).replace(".0", ""));
} catch (IOException e) {
e.printStackTrace();
}
}
//阶乘方法
...
}
第一种写法, 用递归调用方法
public static double jieshen(int num) {
if (num == 1)
return 1d;
else {
if(num >1){
return num * jieshen(num-1);
}
return 1d;
}
}
}
第二种写法, 用循环方式
public static double jieshen(int num) {
double result =1d;
for(int i=1;i<=num; i++) {
result = result *i;
}
return result;
}
--------------------------------
二. 另外一种写法, 用构造方法,阶乘方法不需要static 修饰
public class Factorial{
public Factorial(){};
public Factorial(int i){
System.out.println(recursion(i));
}
private int recursion(int i){
if(i<0)
return -1;
else if(i==0)
return 1;
else
return i*recursion(i-1);
}
public static void main(String[] args){
Factorial factorial=new Factorial(5); //5的阶乘
}
}