gpt4 book ai didi

javascript - 闰年解决方案检查

转载 作者:行者123 更新时间:2023-12-02 18:04:05 25 4
gpt4 key购买 nike

我知道有更好、更有效的解决方案来检查哪一年是闰年。但我是一个初学者,我很好奇,尽管我的代码效率低下,但它是否仍然执行解决方案并且其逻辑没有缺陷?

这是确定特定年份是否为闰年的方法:

如果一年能被 4 整除,则为闰年;

除非该年份也能被 100 整除;

除非该年份也能被 400 整除。

我的解决方案:

function isLeap(year) {   

if (year % 4 === 0 && year % 100 != 0) {
return "Leap year.";
}

if (year % 4 === 0 && year % 100 != 0 && year % 400 === 0) {
return "Leap year.";
}

if (year % 4 === 0 && year % 100 != 0 && year % 400 != 0) {
return "Not leap year.";
}

else {
return "Not leap year.";
}
}

最佳答案

在您的代码中,您分别有 3 个 if 语句。第三个 if 语句,无论结果如何,都会记录“不是闰年”,因此 year % 400 !=0 是一个多余的检查,因为如果删除,它仍然会属于else 比较。

这意味着我们可以将所有不是闰年的内容放入 else 中并消除 if 语句,使代码如下所示。

if (year % 4 === 0 && year % 100 != 0) {
return "Leap year.";
}

if (year % 4 === 0 && year % 100 != 0 && year % 400 === 0) {
return "Leap year.";
}

else {
return "Not leap year.";
}

如果我们查看其余的 if 语句,我们可以看到前 2 个比较是相同的,并且我们可以选择检查 year % 400 === 0

但是,根据您的 3 条规则,第 3 条规则规定:除非那一年也能被 400 整除。因此,我们可以假设,如果它能被 400 整除,那么它就是一个有保证的闰年,并且我们有语句 year % 400 === 0 确保这一点。然后我们使用 OR 运算符 ||。这意味着,如果我们得到可以被 400 整除的年份,我们总是返回闰年,而不管其他 2 条规则如何。

但是,如果它不能被 400 整除,我们就剩下 2 个比较 year % 100 != 0 &&year % 4 === 0。如果这两者都成立,并由 AND 运算符 && 强制执行,那么这也是闰年。这将为您留下以下 if 语句。

if (year % 400 === 0 || year % 100 !== 0 && year % 4 === 0) {
return "Leap year.";
}

else {
return "Not leap year.";
}

此时,您可以说年份要么为真,要么符合闰年的规则而进入 if 语句。这意味着我们可以删除 else 并只包含一个 if 语句和一个额外的返回值,如果使用有效的闰年调用该函数,则永远不会达到该返回值。

if (year % 400 === 0 || year % 100 !== 0 && year % 4 === 0) {
return "Leap year.";
}

return "Not leap year.";

关于javascript - 闰年解决方案检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73712418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com