Напишите функцию, которая возвращает квадрат числа без использования *, + или pow - PullRequest
0 голосов
/ 29 мая 2019

Задача состоит в том, чтобы написать функцию, которая принимает n в качестве входных данных, где n - это число (от -32768 до 32768) и возвращает квадрат этого числа. Простая задача, за исключением того факта, что мы не можем использовать любые операторы, такие как *, + или даже использовать любые математические. функции, такие как Pow. Eval также не допускается. Еще более сложным является то, что мы должны сохранить количество символов меньше 39 символов .

Я абсолютно не могу придумать способ получить квадрат числа без использования + или *. И что еще хуже, уменьшить количество персонажей для меня невозможно.

Подобные коды не будут работать, потому что: я использовал знак плюс, и количество символов превышает 60.

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

Если n - десятичное число, мы должны вернуть в качестве результата ближайшее целое число. Спасибо, что прочитали все это!

Редактировать: Моя проблема была решена. Спасибо всем, кто пытался помочь мне с их кодами, так как это помогло мне получить новый аспект решения каждой проблемы. Еще раз большое спасибо!

Ответы [ 3 ]

2 голосов
/ 29 мая 2019

Вы также можете попробовать это

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

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

Метод repeat () возвращает новую строку с указанным количеством копий строки, для которой он был вызван. См. здесь

Этот подход ограничен только положительными и целыми числами.

// 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 голос
/ 29 мая 2019

Вы можете разделить 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 символов.

1 голос
/ 29 мая 2019

** нет в вашем списке, поэтому вы можете использовать его:

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 символов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...