Недавно один из друзей рассказал мне о проблеме, когда представьте, что вам нужно умножить два числа без использования «*» в Javascript.
Если вы хотите попробовать, можете попробовать прямо сейчас, потому что я расскажу вам о трех известных мне способах. Вероятно, существует множество способов решить эту проблему, и если вы найдете отличный способ решить эту проблему, поделитесь.
Вот несколько крутых и модных способов решить эту проблему.
*** Этот блог отформатирован от худшего к лучшему с точки зрения эффективности ***
*** Под эффективностью я подразумеваю количество шагов для решения проблемы. Чем больше шагов, тем хуже алгоритм для решения проблемы. ***
Метод: 1
function multiply(a, b){ return ("i").repeat(a).repeat(b).length }
Авария:
У нас есть метод, который принимает два входа (a, b). Мы создаем строку «i» и повторяем ее «a» раз, затем повторяем «b» раз, а затем возвращаем длину.
Ex:
multiply(5, 3) //our a is 5 and b is 3 "i" //creating a string of "i" "iiiii" //repeating it a times or 5 "iiiiiiiiiiiiiii" //repeating again b times or 3 then we return the length which would be 15.
Интересный способ решить проблему, но мы можем добиться более эффективного результата.
Метод: 2
function multiply(a, b){ let answer = a for(var i = 0; i < b - 1; i++){ answer += a } return answer }
Авария:
Мы создаем переменную с именем «ответ» и присваиваем ей значение «а». Затем мы создаем цикл for, который будет повторяться до тех пор, пока «i» не станет меньше «b -1». Почему «б -1»? Потому что мы уже присвоили «ответ» «а». На каждой итерации мы добавляем «а» к «ответу». По окончании итерации мы возвращаем «ответ».
Ex:
multiply(6, 3) //our a is 6 and b is 3 //before iteration answer is 6 //assign answer equal to a which is 6 //iteration begins answer is now 12 // i is now 1 answer is now 18 // i is now 2 which is means break loop as i is no longer less than b - 1. then we return "answer" which would be 18.
Метод: 3
Прежде чем я покажу вам это. Я хотел бы отдать должное тому, кто это написал.
Благодарим за этот метод Андрей Этумян, который ответил на эту проблему, и Stack Overflow и nicael, который редактировал эту проблему.
function multiply(a, b) {
return a / (1 / b);
}
Ага! Вот и все!
Авария:
Разделите «1» на «b», а затем разделите «a» на результат.
Ex.
multiply(5, 5) //our a is 5 and b is 5
5 / (1 / 5) //fill in the blanks
5 / 0.2 // (1 / 5) simplifies to 0.2
25 // 5 over 0.2 is 25
then we return 25
Выводы:
Последний метод является наилучшим с точки зрения эффективности, но есть и другие решения, которые можно найти, если мыслить нестандартно.
Спасибо за прочтение!