在线等回答,在递归计算java的阶乘程序中,结果是如何算出来的?

在线等回答,在递归计算java的阶乘程序中,结果是如何算出来的?要详细的步骤

import java.util.Scanner;

public class Recursion {
public static int Factorial(int n) {
if (n < 0) {
System.out.println("无效输入,请重新输入!");
return 0;
} else if (n == 1 || n == 0) {
return 1;
} else
return n * Factorial(n - 1);
}

public static void main(String[] args) {
    System.out.println("input an integer: ");
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    System.out.println("the factorial of "+n+" is "+Factorial(n));
}

}

比如计算5!
5!=5*4!=5*4*3!=5*4*3*2!=5*4*3*2*1!
而如果n=1,返回1
所以5*4*3*2*1!=5*4*3*2*1

就是递归的方式,但是递归有一个问题就是存在效率问题,而且当计算的值过大的时候,要考虑到边界,可能出现long整型溢出的情况。

计算阶乘最简单的思路

double fac = 1;
        for ( i = 1; i <= num; i++) {

            fac *= i;

        }

http://blog.csdn.net/aduovip/article/details/17404165