【发布时间】:2014-03-10 01:34:55
【问题描述】:
我正在编写一个包含两个列表的函数,第二个列表与第一个列表相同,只是它被打乱并删除了一个元素。该函数应返回缺少的元素。我写了这个函数
var findRemoved = function(firstArr, secondArr, indx){
var indx = indx || 0;
for(var i = 0; i<secondArr.length; i++){
if(firstArr[indx] === secondArr[i]){
findRemoved(firstArr, secondArr, ++indx);
}
}
console.log("found end ", firstArr[indx]);
return firstArr[indx];
}
当我用
运行它时var i = findRemoved([1,2,3,4,5,6,7], [5,4,2,6,1,3]);
console.log("i ",i);
我得到它控制台记录“找到结束”,7,这是正确的,但是递归并没有在那个时候中断并继续进行,直到它返回答案“2”知道我可能做错了什么?
【问题讨论】:
-
那你想做什么?你想得到不在第二个数组中的值吗?
-
看起来你只是想找到一个缺失的元素,因为你的回报是一个单一的价值。尝试在递归 if 中添加 else 语句,并将 return 语句放在 else 子句中。因此,如果找到该元素,则执行递归函数,但如果没有匹配,则该函数返回该值。
-
@Michael 因为第二个列表被打乱了,如果我这样做,它将返回数组中的第一个元素,因为第一个数组中的第一个元素不等于第一个元素第二个数组
-
为什么需要递归?它可以简单得多。
-
我只是想用递归来做,为了好玩,我想更好地理解递归。
标签: javascript recursion