问候。
我在本系列中发布了 Codewars 挑战和我的思考过程。我尽可能使用 JS 和 Node 18。只是为了清楚起见,我正在合理使用它们。
本系列的下一篇是“你是一个正方形!”。看,你的乐高瘾有点失控了,你现在正在编码作为替代药物。
嗯,你还好吗?你的下一个任务涉及正方形。所以问题寻求回答“这个数字是平方吗?”。那么,我们该如何解决这个问题呢?然而我们渴望。与任何编码问题一样。
首先,解决它。然后,正确解决。然后,正确快速地解决它。
我的第一直觉引导我这样做:
var isSquare = function(n){ let nIsSquare = false; if (n>=0) { nIsSquare = ( n ** 2 ) == 2 * ( (n - 1) ** 2 ) - ( (n-2) ** 2 ) + 2; } return nIsSquare; }
这是错误的。我和一起去了
n2 =2(n−1) 2−(n−2)2 2
感谢维基百科。但这是验证n^2的公式。我需要一个公式来验证 n.
在另一篇维基百科文章中,有一种简洁、简洁的方法来计算平方根:指数恒等式。
所以我们修复了之前的代码:
var isSquare = function(n){ let nIsSquare = false; if (n>=0) { let sqrt = Math.E ** ( Math.log(n) / 2 ); nIsSquare = Number.isInteger(sqrt); } return nIsSquare; }
Annnnnnnnnnnnnd:
哦,来吧。为什么会失败?哦。 JavaScript 对浮点数做了一些奇怪的事情。所以,这不是代码的错。正确的?猜猜我们永远不会知道。即便如此,我还是爱你,JS。你这个古怪的混蛋。
只需使用 Math.sqrt():
var isSquare = function(n){ let nIsSquare = false; if (n>=0) { nIsSquare = Number.isInteger(Math.sqrt(n)); } return nIsSquare; }
不是最好的,而是最简单的解决方案。做这份工作。
再见。喝水???.
上一页
以上是Codewars - 你是一个方块!的详细内容。更多信息请关注PHP中文网其他相关文章!