【发布时间】:2013-04-11 14:52:03
【问题描述】:
给定一个值数组:
var values = new Array();
array.push(2);
array.push(3);
array.push(4);
我想创建一个迭代函数,它可以为任意长度的数组存储所有可能的值组合。
例如,在这种情况下,可能的值为 (1,1,1)(1,1,2)(1,1,3)(1,1,4)(1,2,1)( 1,2,2)(1,2,3)(1,2,4)(2,1,1)(2,1,2)(2,1,3)(2,1,4)(2 ,2,1)(2,2,2)(2,2,3)(2,2,4)
我知道要做到这一点,我需要使用一个递归函数,如果没有达到最大深度,它将更深一层并再次调用该函数......
我知道从哪里开始(我认为可能)
function iterativeLoop(level, depth) {
for(var i = 0; i < values.length; i++) {
if(level < depth) {
iterativeloop(level+1, depth);
}
else if (level=depth) {
}
}
}
我不确定一旦函数被调用得更深,我如何才能访问“上层”……也就是说,我不确定如何访问 (1,2,4) 而不仅仅是 (?,? ,4)
我希望这是有道理的?
(对不起,我知道我的标题不太好,我想不出如何简洁地解释它)
【问题讨论】:
-
您要查找的词是“递归”,而不是“迭代”(如果您正在搜索,可能会有所帮助)。如果我有时间,我会写一个例子。
-
另外,可能没有必要。现在写一个答案。
-
你从来没有真正有编写递归函数。
-
第一段代码意味着
var values = [2, 3, 4];或者我错过了什么? -
我仍然想知道
1来自哪里=/
标签: javascript recursion iteration