Javascript 数组应该在递归函数中
代码是用JavaScript编写的。我的问题是如何在函数中创建Javascript 数组应该在递归函数中,javascript,arrays,function,recursion,Javascript,Arrays,Function,Recursion,代码是用JavaScript编写的。我的问题是如何在函数中创建arr数组。我不希望它超出功能范围。上面的代码显示了函数外部的arr数组,我不喜欢这样。你可以提出任何建议,因为我的目标是找到36的所有阶乘。答案应该是这样的数组[36,18,12,9,6,4,3,2,1] var arr= [] function factor(number, divisor) { if(divisor >= 1) { if(number % divisor == 0) {
arr
数组。我不希望它超出功能范围。上面的代码显示了函数外部的arr
数组,我不喜欢这样。你可以提出任何建议,因为我的目标是找到36的所有阶乘。答案应该是这样的数组[36,18,12,9,6,4,3,2,1]
var arr= []
function factor(number, divisor) {
if(divisor >= 1) {
if(number % divisor == 0) {
arr.push(divisor)
return factor(number, divisor - 1)
} else {
return factor(number, divisor - 1);
}
}
return arr;
}
console.log("")
console.log("factor of a number 36")
console.log(factor(36,36))
像这样
function factor(number, divisor, arr) {
arr = arr || [];
if (divisor >= 1) {
if (number % divisor === 0) {
arr.push(divisor);
return factor(number, divisor - 1, arr);
} else {
return factor(number, divisor - 1, arr);
}
}
return arr;
}
或者您可以这样做,以便只传递两个参数
function factor(number, divisor) {
return function _factor(number, divisor, arr) {
arr = arr || [];
if (divisor >= 1) {
if (number % divisor === 0) {
arr.push(divisor);
return _factor(number, divisor - 1, arr);
} else {
return _factor(number, divisor - 1, arr);
}
}
return arr;
}(number, divisor);
}
喜欢吗
function factor(number, divisor, s)
{
if(number==divisor) arr = [];
if(divisor >= 1)
{
if(number % divisor == 0)
{
arr.push(divisor)
return factor(number, divisor - 1)
}
else
{
return factor(number, divisor - 1);
}
}
return arr;
}
工作声明arr内部因素函数:
function factor(number, divisor, s) {
var arr = []
if (divisor >= 1) {
if (number % divisor == 0) {
arr.push(divisor)
return factor(number, divisor - 1)
} else {
return factor(number, divisor - 1);
}
}
return arr;
}
明亮的谢谢你,亚历山大。我在发帖之前就试过你的版本了。您的版本中出现的情况是“var arr=[];”在每次调用递归lol时都重置为空数组。对于上面的Alexander,数组不会重置为空。很聪明,对不起。我应该在回答之前尝试一下。@void您将
arr
设置为全局变量(我可以在函数factor
之外获得arr
)-看,这是不对的。。是的,我尝试过投票,但我今天刚刚注册了stackoverflow,就像现在一样,有这个问题,所以我无法投票,因为“投赞成票需要15个声誉”哈哈。你的答案几乎完美,所以我会投赞成票。你的代码不包括36哈哈lol@void因为这与作者版本中的相同。arr
将作为窗口属性。@void这是使用var arr=[]
。这没有。如果你打开这两个版本,你可以看到你得到的arr
在函数factor
之外。这是不正确的。@john chau这不是正确的答案。你看到我的评论了吗?