>172. 阶乘后的零<
>trailingZeroes<
一、解题思路
1、解法一( Java )
解法思路:迭代 + 数学模拟
题目要求返回 n!
结果中尾随零的数量
可以发现 2 * 5
是可以产生尾数是 0
的数,将 2 * 5
或者 2 * 5
的倍数作为一个组合,即组合数即是尾数 0
的个数 ,然而 2
的倍数比 5
的倍数多,故只需要计算 5
的个数即可。
伪代码如下:
class Solution{
public int trailingZeroes(int n) {
//迭代算法
int cnt = 0;
while(n / 5 > 0){
n /= 5;
cnt +=n;
}
return cnt;
}
}
1、解法二( Java )
解法思路:递归 + 三元运算符
题目要求返回 n!
结果中尾随零的数量
可以发现 2 * 5
是可以产生尾数是 0
的数,将 2 * 5
或者 2 * 5
的倍数作为一个组合,即组合数即是尾数 0
的个数 ,然而 2
的倍数比 5
的倍数多,故只需要计算 5
的个数即可。
伪代码如下:
class Solution {
public int trailingZeroes(int n) {
//三元运算符 + 递归算法
return n == 0 ? 0:n / 5 + trailingZeroes(n / 5);
}
}
运行结果截图如下: