用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值

在前端开发中,可以使用JavaScript来生成一个长度为5的数组,数组中的元素是2到32之间的不重复随机数。递归算法可以用来确保生成的随机数是唯一的,即数组中不会出现重复的值。以下是一个可能的实现:

function generateUniqueRandomNumbers(arr, min, max, length) {
  if (arr.length >= length) {
    return arr; // 数组长度达到要求,返回数组
  }

  const randomNum = Math.floor(Math.random() * (max - min + 1)) + min; // 生成随机数

  if (!arr.includes(randomNum)) {
    // 如果随机数不在数组中,则将其添加到数组中
    arr.push(randomNum);
  }

  // 递归调用,直到数组长度达到要求
  return generateUniqueRandomNumbers(arr, min, max, length);
}

const uniqueRandomNumbers = generateUniqueRandomNumbers([], 2, 32, 5);
console.log(uniqueRandomNumbers);

在这个实现中,generateUniqueRandomNumbers函数接受四个参数:

  • arr:当前已经生成的随机数数组。
  • minmax:随机数的最小值和最大值。
  • length:目标数组的长度。

函数首先检查当前数组的长度是否已经达到了目标长度。如果是,则返回数组。否则,它会生成一个随机数,并检查这个随机数是否已经在数组中。如果不在,则将其添加到数组中。然后,函数递归调用自己,直到数组的长度达到要求。

请注意,由于JavaScript的Math.random()函数生成的是0(包含)到1(不包含)之间的随机数,因此我们需要将其映射到所需的范围(在这个例子中是2到32)。这是通过Math.floor(Math.random() * (max - min + 1)) + min来实现的。

posted @ 2025-01-12 09:24  王铁柱6  阅读(29)  评论(0)    收藏  举报