最后更新于1年前
这有帮助吗?
题目链接:
首先判断 nnn 是否小于 555,如果是,则返回 000,因为小于 555 的数的阶乘后不会有零
否则,将 nnn 除以 555,得到商和余数。商表示 nnn 中包含 555 的个数,余数表示 nnn 中包含 252525 的个数,以此类推
然后,将商和余数分别传递给递归函数 trailingZeroes,计算商和余数的阶乘后的零的个数
trailingZeroes
最后,将商和余数的阶乘后的零的个数相加,得到 nnn 的阶乘后的零的个数
func trailingZeroes(n int) int { if n < 5 { return 0 } return n/5 + trailingZeroes(n/5) }
时间复杂度: 时间复杂度是 O(log10n)O(\log_{10} n)O(log10n),其中 nnn 是输入的整数
空间复杂度: 空间复杂度是 O(1)O(1)O(1)