给定一个整数 n ,返回 n! 结果中尾随零的数量。

    提示 n! = n (n - 1) (n - 2) 3 2 1

    示例 1:

    输入:n = 3
    输出:0
    解释:3! = 6 ,不含尾随 0
    示例 2:

    输入:n = 5
    输出:1
    解释:5! = 120 ,有一个尾随 0
    示例 3:

    输入:n = 0
    输出:0

    提示:

    0 <= n <= 104

    进阶:你可以设计并实现对数时间复杂度的算法来解决此问题吗?


    1. class Solution {
    2. /**
    3. 只有质因数含有5 或者 2的才有可能凑出10,所以只需统计[1, n]种所有数的2 或者 5的质因数个数的min即可, n 分解出5的个数为n / 5, 5肯定比2少,所以直接统计5即可 n / 5 + n / 5^2 + ...
    4. */
    5. public int trailingZeroes(int n) {
    6. return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);
    7. }
    8. }