分解函数javascript
我在编写一个分解数字的函数时遇到了一个小问题。困难的部分已经完成了。但是,当num为0时,我似乎无法告诉函数返回1 PS:用JavaScript编写相同函数的其他方法有哪些分解函数javascript,javascript,factorial,Javascript,Factorial,我在编写一个分解数字的函数时遇到了一个小问题。困难的部分已经完成了。但是,当num为0时,我似乎无法告诉函数返回1 PS:用JavaScript编写相同函数的其他方法有哪些 var arrOfNum = []; function factorialize(num) { for(i = 1; i <= num; i++){ // push all numbers to array arrOfNum.push(i); } // multiply each e
var arrOfNum = [];
function factorialize(num) {
for(i = 1; i <= num; i++){
// push all numbers to array
arrOfNum.push(i);
}
// multiply each element of array
var result = arrOfNum.reduce(function(a,b){
return a * b;
});
console.log(result);
}
var arrOfNum=[];
函数因子化(num){
对于(i=1;i综述:
- 缺少局部变量
i
的声明
var i;
- 其他使用的变量的声明在函数上分布。更好的方法是在函数顶部声明变量
- 此任务需要一个
initialValue
作为第二个参数
第一次调用回调时,previousValue
和currentValue
可以是两个值中的一个。如果在reduce调用中提供了initialValue
,则previousValue
将等于initialValue
并且currentValue
将等于数组中的第一个值。如果否initialValue
,则previousValue
将等于数组中的第一个值,currentValue
将等于第二个值
函数阶乘(num){
var i,
arrOfNum=[],
结果;
对于(i=1;i综述:
- 缺少局部变量
i
的声明
var i;
- 其他使用的变量的声明在函数上分布。更好的方法是在函数顶部声明变量
- 此任务需要一个
initialValue
作为第二个参数
第一次调用回调时,previousValue
和currentValue
可以是两个值中的一个。如果在reduce调用中提供了initialValue
,则previousValue
将等于initialValue
并且currentValue
将等于数组中的第一个值。如果否initialValue
,则previousValue
将等于数组中的第一个值,currentValue
将等于第二个值
函数阶乘(num){
var i,
arrOfNum=[],
结果;
对于(i=1;i只需返回值1
function factorialize(num) {
if (num < 1) return 1; //this line is added
for(i = 1; i <= num; i++){
arrOfNum.push(i);
}
var result = arrOfNum.reduce(function(a,b){
return a * b;
});
console.log(result);
}
函数因式分解(num){
如果(num<1)返回1;//则添加此行
对于(i=1;i只需返回值1
function factorialize(num) {
if (num < 1) return 1; //this line is added
for(i = 1; i <= num; i++){
arrOfNum.push(i);
}
var result = arrOfNum.reduce(function(a,b){
return a * b;
});
console.log(result);
}
函数因式分解(num){
如果(num<1)返回1;//则添加此行
对于(i=1;i如果给reduce
一个1
的初始值,即使没有明确的检查,一切都会正常工作:
var result = arrOfNum.reduce(function(a,b){
return a * b;
}, 1);
^^^ // PROVIDE EXPLICIT INITIAL VALUE TO REDUCE
如果给reduce
一个初始值1
,即使没有明确的检查,一切都会正常工作:
var result = arrOfNum.reduce(function(a,b){
return a * b;
}, 1);
^^^ // PROVIDE EXPLICIT INITIAL VALUE TO REDUCE
您已经有了一个for
循环,在这个循环中,您可以一次计算阶乘,而无需使用数组和reduce
function factorial(num) {
var result = 1;
for(i = 2; i <= num; i++) {
result *= i;
}
return result;
}
函数阶乘(num){
var结果=1;
对于(i=2;i您已经有了一个for
循环,在这个循环中,您可以一次计算阶乘,而无需使用数组和reduce
function factorial(num) {
var result = 1;
for(i = 2; i <= num; i++) {
result *= i;
}
return result;
}
函数阶乘(num){
var结果=1;
对于(i=2;i,这里有一个相当精简的函数,它返回一个包含“n”的所有因子的数组
您只需查看
对于那些不知道得到sqrt(n)时的| 0;位的人来说,这是一个更快的数学等价物
由于factn是在一些健全性检查之后定义的,因此函数将返回undefined或一个数组,该数组很容易使用if(factors=factorize(n){success code}sorta结构进行检查
可以对此进行一些改进,但它们很复杂,并且超出了我编写它时的要求-具体来说,我使用它来计算大型图像的CSS精灵大小,方法是对图像的x+y维度使用factorize,然后创建第三个共享因子数组(这将为您提供所有可能的方形精灵大小的列表)
函数分解(n){
n=数量(n);
如果(n){
如果(n>1){
var sqrtn=Math.sqrt(n)| 0;
var-factn=[1,n];
var-ipos=0;
对于(i=2;i,这里有一个相当精简的函数,它返回一个包含“n”的所有因子的数组
您只需查看
对于那些不知道得到sqrt(n)时的| 0;位的人来说,这是一个更快的数学等价物
由于factn是在一些健全性检查之后定义的,因此函数将返回undefined或一个数组,该数组很容易使用if(factors=factorize(n){success code}sorta结构进行检查
可以对此进行一些改进,但它们很复杂,并且超出了我编写它时的要求-具体来说,我使用它来计算大型图像的CSS精灵大小,方法是对图像的x+y维度使用factorize,然后创建第三个共享因子数组(这将为您提供所有可能的方形精灵大小的列表)
函数分解(n){
n=数量(n);
如果(n){
如果(n>1){
var sqrtn=Math.sqrt(n)| 0;
var-factn=[1,n];
var-ipos=0;
对于(i=2;i,可以使用以下使用递归的方法:
function factorize(num){
if(num === 0){
return 1 ;
}
else {
return num = num * factorize(num-1);
}
}
可以使用以下使用递归的方法:
function factorize(num){
if(num === 0){
return 1 ;
}
else {
return num = num * factorize(num-1);
}
}
不知道为什么会有复杂的答案。一个非常简单的答案是:
vari;
函数factorialOf(num){
//最初将阶乘设置为数字
var阶乘=num;
//从1开始,运行时间等于num的for循环
对于(i=1;i console.log(factorialOf(5));
不知道为什么会有复杂的答案。一个非常简单的答案是: