[英]Find Nearest square number of a given number
任务是找到正整数n(取自代码战)的最接近的平方数Nearest_sq(n)。 我已经尝试了下面的方法,但是得到一个无限循环。
while(Math.sqrt(n)%1!==0){
n-- || n++
}
return n;
有人可以指出这段代码在我的逻辑上哪里错吗?
这应该非常接近:
const nearest_sq = n => Math.pow(Math.round(Math.sqrt(n)), 2); console.log(nearest_sq(117)); // 121 console.log(nearest_sq(900)); // 900 console.log(nearest_sq(15)); // 16
也许这不是最短的方法,但至少我认为代码易于理解
function nearst_sq(n) {
var nearstLow = nearst_low(n);
var nearstHigh = nearst_high(n);
return n-nearstLow < nearstHigh-n ? nearstLow : nearstHigh;
}
function nearst_high(n) {
if (Math.sqrt(n)%1 === 0) {
return n;
}
return nearst_high(++n);
}
function nearst_low(n) {
if (Math.sqrt(n)%1 === 0) {
return n;
}
return nearst_low(--n);
}
function nearestSq(n){ let i,j; for(i=j=n;Math.sqrt(i)%1!=0&&Math.sqrt(j)%1!=0;i++,j--); return Math.sqrt(i)%1==0?i:j } console.log(nearestSq(21));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.