繁体   English   中英

查找给定数字的最近平方数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM