javascript - 递归函数 Js
问题描述
我有 numbers 数组,通过 my_number 函数创建一个随机数,如果它已经存在于数组中,我再次调用该函数并创建一个新的随机数,如果它不在数组中,我通过推送将其发送给它。
不幸的是,它似乎一次又一次地发送所有数字,直到浏览器崩溃。
我怎么能解决这个问题。
谢谢你的帮助
var numbers = [1,2,3,4,5];
function mainFunction(){
function my_number(){
var randomNumber = Math.floor((Math.random()*7)+1);
for(let i=0; i<numbers.length; i++){
if(numbers[i] === randomNumber){
my_number();
}else{
numbers.push(randomNumber);
}
}
}
my_number();
}
mainFunction();
解决方案
在my_number
函数中,您在my_number
内部再次调用了函数,for-loop
需要使用.my_number
for-loop
因此需要通过randomNumber
是否存在来获得结果for-loop
,并基于此,您需要决定是否再次调用该函数。
首选方式
const numbers = [1,2,3,4,5]; function mainFunction(){ function my_number(){ const randomNumber = Math.floor((Math.random()*7)+1); const isExisted = numbers.some((item) => item === randomNumber); if (isExisted) { my_number(); } else { numbers.push(randomNumber); } } my_number(); } mainFunction(); console.log(numbers);
关于您的代码库。
const numbers = [1,2,3,4,5];
function mainFunction(){
function my_number(){
const randomNumber = Math.floor((Math.random()*7)+1);
let isExisted = false;
for (let index = 0; index < numbers.length; index ++) {
if (numbers[index] === randomNumber) {
isExisted = true;
break;
}
}
if (isExisted) {
my_number();
} else {
numbers.push(randomNumber);
}
}
my_number();
}
mainFunction();
console.log(numbers);
推荐阅读
- php - 渲染错误:TypeError:无法读取 laravel vuejs 中未定义的属性标题
- linux - Eroor:您需要安装 gtk-doc >= 1.12 才能构建 GStreamer RTSP 服务器(Gstreamer RTSP 服务器交叉编译)
- reactjs - 链接中的状态未设置,返回未定义
- python - 使用存储在 python 中的多个矩阵中的数据创建和求解线性方程组的不同组合
- javascript - 单击任何一个 div 时隐藏其他 div
- r - 如何将数据写入具有不同索引的单个列?
- windows - Windows 10 和 2012 中的 Windows IOCP 套接字编程崩溃
- google-chrome - 有没有办法在没有 Selenium 的情况下打开新版本的 Chrome
- c# - 表格 1 当前上下文中不存在
- r - 如何使用两个单独的数据集创建 3d 图?在 R 中