如何递归地创建给定值的数组?

时间:2016-04-04 21:46:06

标签: javascript arrays recursion

我正在尝试使用javascript进行递归,而我无法确定如何递归执行此操作。例如,fillArray(num, len) num = 5len = 3将返回[5,5,5]。老实说,我被困住了,我无法在这方面取得进展。它并不多,但这就是我所拥有的。有人可以帮忙吗?

var fillArray = function(num, len) {
    var list = [];
    if (length === 0) {
        return [];
    } 
    return list.concat(function(value, length--));
}

5 个答案:

答案 0 :(得分:2)

这可以更容易迭代地完成

var fillArray = function(num, len) {
   var result = [];

   for (var i = 0; i < len; i++) {
      result.push(num);
   }

   return result;
}

如果你真的必须使用递归,这应该可行

var fillArray = function(num, len) {
   if (len === 0) {
      return [];
   }

   return [num].concat(fillArray(num, len - 1));
}

答案 1 :(得分:0)

你可以这样做,但说实话并不是很有效。

function arrayFill(num, length){
  if(length === 0) return [];
  return [].concat(num, arrayFill(num, length - 1));
}

console.log(arrayFill(5, 3));

答案 2 :(得分:0)

这样的事情:

[ec2-user@ip-172-31-16-150 ~]$ sudo service docker start
[ec2-user@ip-172-31-16-150 ~]$ docker --version
Docker version 1.9.1, build a34a1d5/1.9.1
[ec2-user@ip-172-31-16-150 ~]$ docker-compose --version
docker-compose version: 1.4.2
[ec2-user@ip-172-31-16-150 ~]$ docker-compose -p docker -f my-compose.yml up -d
Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
[ec2-user@ip-172-31-16-150 ~]$ sudo docker-compose -p docker -f my-compose.yml up -d
sudo: docker-compose: command not found
[ec2-user@ip-172-31-16-150 ~]$ echo $DOCKER_HOST

答案 3 :(得分:0)

var fillArray = function(num, len) {
   var result = [];

   if (len > 1) result.push(fillArray(num, len - 1));
   result.push(num);

   return result;
}

x = fillArray(5, 3);

答案 4 :(得分:0)

示例使用递归

function fillArray( num, length) {
    var array;
    if( length) {
        array = fillArray( num, length-1);
        array.push( num);
        return array;
    }
    else {
       return [];
    }
}

递归函数调用自身,长度递减1,直到长度为零。然后它返回一个空数组。在返回路径中,在递减递减的每个级别,数字的值被推送到数组上。

递归通常需要一个条件来阻止进一步的递归(这里length - 1达到零),并返回递归调用的值(这里是array的值)。