Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单递归中的返回值_Javascript_Jquery_Recursion - Fatal编程技术网

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,如果需要,这是服务器端的工作