在数组上使用递归

亚历山大·卡尔瓦切夫

编写一个函数,该函数通过给定的整数数组和正数X返回大于X的所有奇数元素的乘积。使用递归!

我尝试了这个:

function result(arr, x) {
    if (arr.length <= 0) {
        return 0;
    }

    if (arr[0] > x && arr[0] % 2 === 1) {
        return arr[0] + result(arr.slice(1));
    }

    return result(arr.slice(1));
}

console.log(result([3, 2, 3, 4, 5, 6, 7, 8, 9], 1));

答案是3。在第一次迭代之后(x变得不确定)。

sbgib

尝试这样:

function result(arr, x) {
    if (arr.length <= 0) {
        return 0;
    }

    if (arr[0] > x && arr[0] % 2 === 1) {
        return arr[0] + result(arr.slice(1), x);
    }

    return result(arr.slice(1), x);
}

console.log(result([3, 2, 3, 4, 5, 6, 7, 8, 9], 1));

你很亲密!你只需要的值传递xresult再次调用时,它的功能。之后,它会返回正确的答案:3 + 3 + 5 + 7 + 9 = 27


编辑:x由于变量的范围,每次都需要传递到函数调用中。到目前为止,该result函数只知道直接传递给它的变量。

如果x为常数,则处理该常数的另一种方法是x在开始处进行定义,然后将函数更改为仅接受数组:

    const x = 1;

    function result(arr) {
        if (arr.length <= 0) {
            return 0;
        }

        if (arr[0] > x && arr[0] % 2 === 1) {
            return arr[0] + result(arr.slice(1));
        }

        return result(arr.slice(1));
    }

    console.log(result([3, 2, 3, 4, 5, 6, 7, 8, 9]));

如果x不是常数,但是只想将值传递给递归函数一次,则也可以使用子函数来实现,例如:

    function result(arr, x) {
      function recur(arr) {
        if (arr.length <= 0) {
          return 0;
        }

        if (arr[0] > x && arr[0] % 2 === 1) {
          return arr[0] + recur(arr.slice(1));
        }

        return recur(arr.slice(1));
      }

      return recur(arr);
    }

    console.log(result([3, 2, 3, 4, 5, 6, 7, 8, 9], 1));

在这种情况下,该recur函数可以访问直接传递给它的变量(arr)及其父函数(x的变量使用arr最接近的可用范围的值。此方法有助于简化复杂的递归函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使此函数在数组上递归

来自分类Dev

使用For循环在数组中递归搜索

来自分类Dev

如何在数组上使用递归计算平均值?

来自分类Dev

在数组上使用set()

来自分类Dev

使用递归在数组中查找元素-JavaScript

来自分类Dev

在数组上使用GREP查找单词

来自分类Dev

在数组上使用preg_replace

来自分类Dev

在数组上使用->运算符

来自分类Dev

在数组上使用ScrollView的问题

来自分类Dev

在数组上使用GREP查找单词

来自分类Dev

AngularJs:在数组输入上使用$ setValidity

来自分类Dev

如何在数组上使用.each()

来自分类Dev

在数组元素上使用cat

来自分类Dev

在数组上使用方法

来自分类Dev

在数组上使用 json_encoding

来自分类Dev

在数组中递归移动

来自分类Dev

在数组递归中增加整数拆分

来自分类Dev

MongoDB:在数字或字符串数组上使用$ elemMatch

来自分类Dev

在数组上使用IEnumerable有什么优势?

来自分类Dev

如何使用numpy在数组上优化此双循环?

来自分类Dev

如何在数组的向量上使用std :: find?

来自分类Dev

使用Twig在数组的值上添加逗号

来自分类Dev

改进打字稿以在数组上使用构造函数

来自分类Dev

MongoDB:在数字或字符串数组上使用$ elemMatch

来自分类Dev

在数组上使用delete []导致堆损坏

来自分类Dev

在angularjs中使用$ q在数组上循环异步函数

来自分类Dev

如何在数组derbyjs上使用indexof

来自分类Dev

在数组上使用'ref'关键字

来自分类Dev

如何在数组的向量上使用std :: find?