#39 不用循环生成数组


  • 0

    const arrWithoutLoop = n => n <= 0 ? [] : arrWithoutLoop(n - 1).concat(n - 1)
    
    // or
    
    const acc = (n, a) => n <= 0 ? a : acc(n - 1, [n - 1, ...a])
    const arrWithoutLoop = n => acc(n, [])
    
    // or
    const arrWithoutLoop = (f => f(f))(f => n => n <= 0 ? [] : f(f)(n - 1).concat(n - 1))
    

  • 0

    递归,老办法:
    const arrWithoutLoop = (n) => /* TODO */
    {
    var arr = [];
    //内部递归函数
    innerFun = (_num) => {
    if(_num > 0){
    arr.push(--_num);
    innerFun(_num);
    }
    };
    innerFun(n);
    return arr.reverse();
    }


  • 0

    新手写的递归,代码有点不好看

    const arrWithoutLoop = (n) => {
       let arr = [], num = 0;
       if (n === 0) {
           return arr;
       }
       function fn() {
           arr.push(num);
           num++;
           n--;
           if (n > 0) {
               fn();
           }
       }
    
       fn();
    
       return arr;
    };

  • 0

    const arrWithoutLoop = (n) => {
    return n === 0 ? [] : ''.repeat(n - 1).split('').map((_, index) => index)
    }


  • 0

    const arrWithoutLoop = (n) => {
    return n === 0 ? [] : '%'.repeat(n - 1).split('%').map((_, index) => index)
    }


  • 0

    const arrWithoutLoop = (n) => {
      return n === 0 ? [] : '_'.repeat(n - 1).split('_').map((_, index) => index)
    }
    

  • 0

    新思路
      const arrWithoutLoop = (n) =>  [...(new Array(n)).keys()];
    

  • 0

    const arrWithoutLoop = (n) => {
      let arr = []
      const T = (index) => {
        if (index > 0) {
          arr.unshift(index - 1)
          T(--index)
        }
      }
      T(n)
      return arr 
    }
    
    

  • 0

    const arrWithoutLoop = (n) => Array.from({ length: n }, (value, key) => key)
    
    const arrWithoutLoop = (n) => {
      if(n === 0) {
        return []
      }
      let result = [];
      result.unshift(n - 1);
      if (n === 1) {
        return result
      } else {
        return arrWithoutLoop(n - 1).concat(result)
      }
    };
    
    const arrWithoutLoop = (n) => [...new Array(n).keys()];
    

  • 0

    @jax#39 不用循环生成数组 中说:

    牛逼,没用过keys()


登录后回复
 

与 ScriptOJ 的连接断开,我们正在尝试重连,请耐心等待