Javascript 简单递归中的返回值
我想生成一个随机整数。为了检查它是否尚未生成,我想将它添加到数组中,下次生成新整数时,我想检查它是否存在于数组中,如果存在,然后再次生成(直到它生成某个不存在的整数),然后返回整数 我正在使用下面的递归函数进行尝试,但是递归不能正常工作(当它生成存在的数字时,就会出现问题)Javascript 简单递归中的返回值,javascript,jquery,recursion,Javascript,Jquery,Recursion,我想生成一个随机整数。为了检查它是否尚未生成,我想将它添加到数组中,下次生成新整数时,我想检查它是否存在于数组中,如果存在,然后再次生成(直到它生成某个不存在的整数),然后返回整数 我正在使用下面的递归函数进行尝试,但是递归不能正常工作(当它生成存在的数字时,就会出现问题) varids=[]; 函数generateID(){ var newID=Math.floor(Math.random()*6)+1;//测试范围小 if(jQuery.inArray(newID,ids)=-1){ id
varids=[];
函数generateID(){
var newID=Math.floor(Math.random()*6)+1;//测试范围小
if(jQuery.inArray(newID,ids)=-1){
id.push(newID);
return newID;//从这里返回是否正确?
}否则{
//问题部分
console.log(newID+“存在”);
generateID();
}
}
函数getID(){
var i=generateID();
控制台日志(i);
}
Generate ID
在else情况下,您只需返回generateId的输出即可。您还可以使用Array.includes
方法来确定数组中是否存在某些内容
varids=[];
函数generateID(){
var newID=Math.floor(Math.random()*6)+1;//测试范围小
如果(!id.includes(newID)){
id.push(newID);
返回newID;
}否则{
console.log(newID+“存在”);
返回generateID();
}
}
函数getID(){
var i=generateID();
控制台日志(i);
}
generateID
要使其递归,需要返回generateID()代码>,内部生成ID
。但是如果你点击按钮7次,你将得到一个无限的递归循环,你的页面将完全没有响应。在出现问题的else块中,确保用户单击次数不能超过6次(或者在现实世界项目中使用的任何更高的数字-这可能是一种罕见的边缘情况,但注意这些是一个好习惯)。尝试使用return generateID()
而不是仅仅使用generateID()
一个安全的应用程序将不会填充客户端所有已获取的ID,如果需要,这是服务器端的工作