以数组作为输入的递归函数
recursive function with an array as input
我正试图创建一个函数,从一个名为胸部的数组中获取胸部练习。
这个函数需要能够随机选择几个练习,这是我使用随机指针完成的。为了停止重复练习,我比较选择的胸部练习(即胸部[指针]),并将其与最终数组中的所有值进行比较。
如果新练习尚未在最终数组中,则会返回新拾取的练习,然后将其推送到最终数组中。如果它已经在最终数组中,则递归调用该函数。其想法是,该函数将递归运行,直到它找到一个尚未选择的新练习:
获取胸脯:
function getChest(arr){
var pointer = 0;
//random array pointer
pointer = Math.round(Math.random() * (chest.length - 1));
//check for duplicate
for(var i = 0; i < arr.length - 1; i++){
if(arr[i].name === chest[pointer].name){
return getChest(arr);
} else {
return chest[pointer];
}
}
};
主要功能使用此方法随机选择练习。最后一个数组称为"day"。:
function chooseExercises(){
for(i = 0; i <= 5; i++){
ex = getChest(day);
day.push(ex);
}
}
我遇到的问题是,当我运行它时,仍然有重复的。你知道出了什么问题吗?(我使用angularJS)
将您的函数修改为
function getChest(arr){
var pointer = 0;
//random array pointer
pointer = Math.round(Math.random() * (chest.length - 1));
//check for duplicate
for(var i = 0; i < arr.length; i++){
if(arr[i].name === chest[pointer].name){
return getChest(arr);
}
}
return chest[pointer];
};
基本上,循环在用其全长检查值之前就已经断开了。
EDIT:您的循环在arr.length-1
上运行了多次,实际上应该只是arr.length
。
相关文章:
- 递归函数中断
- 将jQuery对象传递到setTimeout递归函数中
- 对象与递归函数的比较
- 循环内部的递归函数未按预期工作
- 递归函数返回不正确
- 递归函数编程困境
- 给定一个带有数字的数组,我如何编写一个递归函数,当 2 个元素加起来为一个目标时,它会在数组中查找索引
- 返回不会退出 javascript 中的递归函数
- jquery递归函数转换为非递归函数
- AngularJS,promise带有递归函数
- 如何停止此递归函数
- 如何将下面的递归函数转换为纯函数
- jQuery setTimeout ajax递归函数在即时消息程序中短时间后抛出错误
- Javascript递归函数引用了这一点
- 如何将这个递归函数转换为迭代函数
- jQuery递归函数调用和Javascript之间有区别吗;s setInterval
- 从javascript中的递归函数获取undefined
- 将递归函数转换为异步 CPS 实现 (javascript)
- 我怎样才能把它变成一个循环,而不是一个递归函数
- 以数组作为输入的递归函数