//1! 1 f(1)
//2! 2*1 f(2)
//3! 3*2*1 f(3)
//4! 4*3*2*1 f(4)
//n! n*(n-1)*...*1
?
从上式我们可以看出:
f(1) = 1*f(0) //0的阶乘是1,所以f(0)就不写出来了
f(2) = 2*f(1)
f(3) = 3*f(2)*f(1)
f(4) = 4*f(3)*f(2)*f(1)
f(n) = n*f(n-1)*...*f(1)
public class Sum {
public static void main(String[] args) {
System.out.println(sum(4));
}
//当i=1时,返回1;当i = n时则返回 n*sum(n-1),这个sum(n-1)会一直调用自己,直到n = 1;则执行return 1;方法非正常终止。
public static int sum(int n){
if(n == 1){
return 1;
}
else{
return n*sum(n-1);
}
}
}
//package com.baidu;
?
import java.util.Scanner;
?
public class SumDome01 {
public static void main(String[] args) {
int j = 0;
//创建一个对象
Scanner scanner = new Scanner(System.in);
//提示使用者输入阶数
System.out.println("请输入阶数");
//判断输入是否为int类型,如果是,那么j = 输入阶数
if(scanner.hasNextInt()){
j = scanner.nextInt();
}
//如果i=0;那么输出1;
int sum = 1;
for (int i = 0; i <= j; i++) {
if(i==0){
return 1;
}
else{
return sum = sum*i;
}
}
System.out.println(sum);
//关闭scanner,减小资源占用率
scanner.close();
}
?
}
?
原文:https://www.cnblogs.com/shunkang0312/p/14446319.html