/*
* 递归之阶乘
* 阶乘就是整数n乘以n-1再乘以n-2依次乘下去,直到乘到1为止,用数据表示法就是n!
* 阶乘分析:n*(n-1)*(n-2)*...*1通过表达式分析,可以设定一个表达式fun(n) = n*(n-1)*...*1 (n>2);
* 那么f(n-1) = (n-1)*(n-2)*...*1;由此可以推出fun(n) = n * fun(n-1);
* 所以我们只需要定义好fun函数。
* 代码示例如下:
*/
public class RecursiveFactorial {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//读取控制台参数
long n = Long.valueOf(sc.next());
//返回结果
long result = getResult(n);
System.out.println(n+"的阶乘的结果为:"+result);
}
private static long getResult(long n){
//n等于1时为程序出口,1的阶乘为1,所以返回1
if(n==0){
return 1;
}
//递归函数的运算fun(n) = n * fun(n-1)
return n * getResult(n-1);
}
}
//输出结果为:
5的阶乘的结果为:120