这道题用到的数字的知识。判断结果有多少个0,就是多少个10,而10=2×5,所以就是判断有min(2的个数,5的个数)。因为是求阶乘,只要有5,就意味着有4和2,所以2的个数是多于5个的,也就是说,5的个数决定了算出的结果有多少个0.
(1)C语言实现
int trailingZeroes(int n) {
if(n==0)
return 0;
return n/5+trailingZeroes(n/5);
}
/*
int trailingZeroes(int n) {
int result = 0;
for(long i=5;i<=n;i=i*5)
result +=n/i;
return result;
}
*/
(2)C++实现
class Solution {
public:
int trailingZeroes(int n) {
return n==0?0:n/5+trailingZeroes(n/5);
}
};
/*
class Solution {
public:
int trailingZeroes(int n) {
int result = 0;
for(long long i=5;(n/i)>0;i*=5)
result += n/i;
return result;
}
};
*/
(3)java实现
public class Solution {
public int trailingZeroes(int n) {
if(n==0)
return 0;
return n/5+trailingZeroes(n/5);
}
}
/*
public class Solution {
public int trailingZeroes(int n) {
int result = 0;
for(long i=5;i<=n;i*=5)
result += n/i;
return result;
}
}
*/