题目链接:点击查看
题目描述:
给定一个非负整数,判断它的阶乘结果的结尾有几个 0。
输入输出:
输入: 3 输出: 0
输入: 5 输出: 1
题目分析:
很明显,每个尾部的 0 由 2 × 5 = 10 而来,因此我们可以把阶乘的每一个元素拆成质数相乘,统计有多少个 2 和 5。明显地可以看出,质因子 2 的数量远多于质因子 5 的数量,因此我们可以只统计阶乘结果里有多少个质因子 5。
代码:
int trailingZeroes(int n)
{
return n==0?0:n/5+trailingZeroes(n/5); //递归,计算原数中及 原数除5后所得商中5的总个数和
}