编写一个不使用*,+或pow返回数字平方的函数

时间:2019-05-29 08:03:09

标签: javascript algorithm math numbers

任务是编写一个函数,将n作为输入,其中n是一个数字(从-32768到32768),并返回该数字的平方。简单的任务,除了以下事实:我们不能使用任何运算符(例如*,+),甚至不能使用任何数学运算。功能,如战俘。也不允许评估。 更具挑战性的是,我们必须使字符代码计数少于39个字符

我绝对想不出不使用+或*即可求出数字平方的方法。更糟糕的是,要减少字符数,对我来说是不可能的。

像这样的代码将不起作用,因为:我使用了加号,并且字符数超过60。

function sq(n){
   var res=n;
   for(i=1;i<n;i++)
   res+=n;
return res;
}

如果n为小数,则我们将返回最接近的整数作为结果。 感谢您阅读所有这些内容!

编辑:我的问题已经解决。感谢所有试图帮助我编写代码的人,因为它帮助我获得了解决每个问题的新途径。 再次非常感谢您!

3 个答案:

答案 0 :(得分:2)

您也可以尝试

function multiply(a) {
  return a / (1 / a);
}

console.log(multiply(6))
console.log(multiply(4))

repeat()方法返回一个新字符串,该字符串具有指定数量的被调用字符串的副本。请参见here

此方法仅限于正数和整数。

// Another method

function multiplytwo(a) {
  return ("i").repeat(a).repeat(a).length
}


console.log(multiplytwo(4))
console.log(multiplytwo(25))

//creating a string “i” and repeating it “a” times, then repeats that “a” times, and then returning the length.

答案 1 :(得分:1)

**不在您的列表中,因此您可以使用它:

sq = n => n ** 2



console.log(sq(5));

您也可以使用-两次,而不是+

sq=n=>{s=0;for(let i=n;i>0;i--)s=s-(-n);return s}

console.log(sq(5));

(功能定义为49个字符)

答案 2 :(得分:1)

您可以将n除以1 / n

为了不使用Math.round进行四舍五入,我使用了this

s=n=>(r=>(r-~~r<.5?0:1)- -~~r)(n/(1/n))

console.log(s(5));
console.log(s(4.4));
console.log(s(-4.44));

这有39个字符。