Number of trailing zeros of N

该博客讨论了如何编写程序来计算一个给定数字的阶乘中尾随零的个数,提供了一种不直接计算阶乘而是通过除以5的方法来查找5的因子的解决方案。还展示了两种不同的实现方式,一种是使用循环,另一种是使用递归,强调了代码简洁性和效率。
摘要由CSDN通过智能技术生成

Number of trailing zeros of N!

创建时间: November 8, 2021 3:22 PM
最后编辑时间: November 8, 2021 3:33 PM
标签: 数学
状态: 已完成
等级: 5 kyu
网址: https://www.codewars.com/kata/52f787eb172a8b4ae1000a34/train/java

Details

Write a program that will calculate the number of trailing zeros in a factorial of a given number.

编写一个程序,计算给定数字的阶乘中尾随零的个数

补充
N的阶乘: N ! = 1 ∗ 2 ∗ 3 ∗ … ∗ N N! = 1 * 2 * 3 * … * N N!=123N

尾随零(trailing zeros ):数字末尾0的个数,如20200的尾随零为2。

Examples

zeros(6) = 1
# 6! = 1 * 2 * 3 * 4 * 5 * 6 = 720 --> 1 trailing zerozeros(12) = 2
# 12! = 479001600 --> 2 trailing zeros

提示:不要计算阶乘,寻找其他办法。

解法

我的解法

不断除以5,相当于分解出阶乘中的5,直至分解不出5来

public class Solution {
  public static int zeros(int n) {
      // your beatiful code here
    int ret=0;//存放结果
    while(n>0){
      n/=5;
      ret+=n;
    }
      return ret;
    
  }
}

优秀解法

思路相同,使用递归,简化代码

public class Solution {
  public static int zeros(final int n) {
    return (n < 5) ? 0 : (n / 5) + zeros(n / 5);
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值