172. Factorial Trailing Zeroes

Given an integer n, return the number of trailing zeroes in n!.

Note: Your solution should be in logarithmic time complexity.

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

 

Because all trailing 0 is from factors 5 * 2.

But sometimes one number may have several 5 factors, for example, 25 have two 5 factors, 125 have three 5 factors. In the n! operation, factors 2 is always ample. So we just count how many 5 factors in all number from 1 to n.

public int trailingZeroes(int n) {
        return n == 0 ? 0 : (n / 5 + trailingZeroes(n / 5));
    }

  

posted @ 2017-10-22 05:32  apanda009  阅读(92)  评论(0编辑  收藏  举报