输入一个正整数n,求n!末尾有多少个0

思路:

1)按正常思路,我先求出n的阶乘,但是这样做,会使得结果溢出,从而得不到最后的结果。以下是求阶乘的代码,递归。

public static long getNFactorial(int n){

        if(n==0){

            return 1;

        }

        return n*getNFactorial(n-1);

}

   2)第二种思路为正确思路,求末尾几个0,就看这个数有几个10因子,10=5*2,但是最后得到的结果2的个数一定多于5的个数,所以只需要求5的个数就可以了。但是就像25这种数字,它可以被5除两次,所以我们要在循环中除以5,最后把除5的个数累加就可以了。

import java.util.Scanner;

public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int cnt=0;
        for(int i=0;i             n/=5;
            cnt+=n;
        }
        System.out.println(cnt);
    }

你可能感兴趣的:(编程练习)