leetcode Factorial Trailing Zeroes题解

题目描述:

Given an integer n, return the number of trailing zeroes in n!.

Example 1:

Input: 3
Output: 0
Explanation: 3! = 6, no trailing zero.

Example 2:

Input: 5
Output: 1
Explanation: 5! = 120, one trailing zero.

中文理解:给定一个数,求这个数阶乘的结果末尾有几个零。

解题思路:将阶乘进行因式分解,比如5!=1*2*3*4*5=1*2*3*2*2*5,共有1对2*5,所以结果就只有一个0嘛;有几对2*5,结果就有几个0!
所以问题就简化为找有几对2*5。2的个数是远远多于5的,所以最终简化为了找出5的个数即可。
如果找出5的个数呢,比如20!,从1到20,共有5,10,15,20,共有4个5,即结尾0的个数为n/5!25!结果不只是25/5=5个0,25结果有6个0,因为25=5*5,有两个5。所以结果f(n)=n/5+f(n/5)。

代码(java):

class Solution {
    public int trailingZeroes(int n) {
        if(n/5>=5){
            return n/5+trailingZeroes(n/5);
        }
        else{
            return n/5;
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值