任务是编写一个函数,将n作为输入,其中n是一个数字(从-32768到32768),并返回该数字的平方。简单的任务,除了以下事实:我们不能使用任何运算符(例如*,+),甚至不能使用任何数学运算。功能,如战俘。也不允许评估。 更具挑战性的是,我们必须使字符代码计数少于39个字符。
我绝对想不出不使用+或*即可求出数字平方的方法。更糟糕的是,要减少字符数,对我来说是不可能的。
像这样的代码将不起作用,因为:我使用了加号,并且字符数超过60。
function sq(n){
var res=n;
for(i=1;i<n;i++)
res+=n;
return res;
}
如果n为小数,则我们将返回最接近的整数作为结果。 感谢您阅读所有这些内容!
编辑:我的问题已经解决。感谢所有试图帮助我编写代码的人,因为它帮助我获得了解决每个问题的新途径。 再次非常感谢您!
答案 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个字符。