python面试题
author:刘大神
求n阶乘末尾连续0的个数,如5!=120,末尾0个数为1.
class Solution2:
#方案1 使用递归 当数值足够大的时候递归会报错 def trailingZeroes(self, n): if isinstance(n, int) and n >= 0: zeroes = lambda k: k // 5 + zeroes(k // 5) if k // 5 else 0 return n // 5 + zeroes(n // 5) if n // 5 else 0 else: return '输入不合法' #方案2 使用循环 循环则不会发生这种问题 def trailingZeroes2(self,n): if isinstance(n, int) and n >= 0: i = 0 while n > 0: i += n // 5 n = n // 5 return i else: return '输入不合法' n = 10**2000 import time now = time.time() print(Solution2().trailingZeroes2(n), time.time() - now) now = time.time() print(Solution2().trailingZeroes(n), time.time() - now)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步