function range(start, end) {
var acc = [];
for (var i = start; i < end; i++) {
acc.push(i);
}
return acc;
}
Используя функцию диапазона и метод уменьшения, мне нужно переписать факториальную функцию.Как написать факториальную функцию с уменьшением и диапазоном?
function factorial(n) {
// YOUR CODE HERE
}
Мне был дана подсказка, чтобы написать функцию в forEach сначала, а затем переписать ее с диапазоном и уменьшить. Это была моя попытка.
function factorial(n){
var product = 1;
n.forEach(function(x){
if(x===0){
return 1;}
product *= factorial(x-1);
});
return product;
}
factorial(4);
Это была моя попытка. Я знаю, что это беспорядок, но мои вопросы: как я могу использовать forEach, когда n - это просто число, а forEach - для массивов? так как они хотят, чтобы я использовал каждый первый, чтобы написать факториальную функцию, мне нужно правильно использовать базовый регистр? Я также посмотрел в MDN и попытался понять сокращение, следуя их синтаксису с аккумулятором + currentValue и придумал этот псевдокод.
function factorial(n){
n.reduce(function(x){
x*range;
});
}
factorial(5)
еще раз Я не понимаю, как я могу использовать сокращение, если параметр не является массивом.
я так потерял с этой проблемой .... – heliu
в случае 'n.forEach',' n' должен быть массивом, так как [ 'Массив # forEach'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach) - это метод, доступный только для массивов. –
Я могу только предположить, что они действительно означали диапазон использования и сначала для первого, затем используйте диапазон и уменьшите.Это единственное, что имеет смысл для меня. Используйте диапазон для генерации чисел от 1 до n, затем используйте forEach для итерации по массиву, умножая окончательный ответ. Затем избавьтесь от forEach и используйте сокращение по результатам диапазона (n). forEach сам по числу просто не сработает. –