当前位置: 首页 > 知识库问答 >
问题:

Coderbyte阵列添加解决方案--For循环与For循环

鲜于喜
2023-03-14

我试图理解数组加法CoderByte问题的解决方案中的逻辑。这是问题提示——“使用JavaScript语言,让函数ArrayAdditionI(arr)获取存储在arr中的数字数组并返回字符串true,如果数组中的任何数字组合可以加到等于数组中的最大数字,否则返回字符串false。例如:如果arr包含[4, 6, 23, 10, 1, 3],则输出应该返回true,因为4 6 10 3 = 23。数组不会为空,不会包含所有相同的元素,并且可能包含负数。”

这是一个可行的解决方案,但我在for循环中迷失了for循环。为什么i=j的情况不总是这样,因为for循环都是从计数器0开始的。那么,它不总是0=0吗?

  function ArrayAdditionI(arr) { 
  arr.sort(function(a,b){return a - b})
  var largest = arr.pop();
  var sum = 0;
  for (var i = 0; i < arr.length; i++){
    sum += arr[i];
    for (var j = 0; j < arr.length; j++){
      if (i != j) {
        sum += arr[j];
        if (sum == largest) {
          return true;
        }
      }
    }
    for (var k = 0; k < arr.length; k++) {
      if (i != k) {
        sum -= arr[k];
        if (sum == largest) {
          return true;
        }
      }
    }
    sum = 0;
  }
  // code goes here  
  return false; 

}

谢啦!

共有2个答案

管玉堂
2023-03-14

问题是,在带有“i”变量的for循环中有2个for循环。变量“i”始终为0,直到您完成对内部循环2的迭代。

for(var i=0){
  
  for(var j=0){}
  
  for(var k=0){}
  
  }
严繁
2023-03-14

i_made_that

为了进一步解释k循环,它用于按照数组值最初添加的顺序进行回溯和减去数组值,以产生其他方法无法获得的新结果。

如果没有k循环,就无法解决许多潜在的数组(尽管由于缺乏适当的测试,它实际上会通过coderbyte测试用例)。

考虑[1,2,3,98,100]...这应该从2 98=100开始传递。然而,如果没有k循环,它就不会。如果您记录不带k的sum的结果,您会看到:

3 (1 + 2)
6 (3 + 3) 
104 (6 + 98) 
3 (2 + 1) 
6 (3 + 3) 
104 (6 + 98) 
4 (3 + 1) 
6 (4 + 2) 
104 (6 + 98) 
99 (98 + 1) 
101 (99 + 2) 
104 (101 + 3) 

然而,对于k循环,在i的第二次迭代中,它将通过,因为它将从104中减去1,然后从103中减去3,达到100。

 类似资料:
  • 问题内容: 我在Javascript中遇到了奇怪的行为。我懂了 “对象不支持此属性或方法” 以下代码中的函数异常: 当我使用以下代码更改代码时,问题消失了: inside的值是多少? 问题答案: 不要用于数组迭代。 重要的是要了解,用于访问索引的Javascript数组的方括号语法()实际上是从… 继承的。 该结构不能像其他语言(php,python等)中所看到的那样更传统。 Javascript

  • 我试图在for循环中获得for循环,因此输出如下: 我希望输出显示一个正方形 我不知道它为什么不这样做。下面是我的代码:

  • 我正在编写一个计算e^x值的方法。我在python中实现它的方式如下。 这将很好地返回e^x的值。但是,当我尝试在c#中实现相同的方法时,它没有输出与python中相同的值。以下是c#中的实现。 起初,这段代码的输出是一个无穷大符号。为了解决这个问题,我只是减少了循环运行的次数。在c#中,循环只运行10次,代码的输出非常接近于python中循环运行100次的输出。我的问题是,在不同的编程语言中,两

  • for循环是一种重复控制结构,允许您有效地编写需要执行特定次数的循环。 语法 (Syntax) Perl编程语言中for循环的语法是 - for ( init; condition; increment ) { statement(s); } 这是for循环中的控制流 - init步骤首先执行,只执行一次。 此步骤允许您声明和初始化任何循环控制变量。 只要出现分号,就不需要在此处输入声明。

  • ' for '循环是最紧凑的循环形式。 它包括以下三个重要部分 - loop initialization ,我们将计数器初始化为起始值。 初始化语句在循环开始之前执行。 test statement将测试给定条件是否为真。 如果条件为真,则执行循环内给出的代码,否则控件将退出循环。 iteration statement ,您可以在其中增加或减少计数器。 您可以将所有三个部分放在一行中以分号分隔

  • 问题 你想通过一个 for 循环来迭代数组、对象或范围。 解决方案 # for(i = 1; i<= 10; i++) x for x in [1..10] # => [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] # To count by 2 # for(i=1; i<= 10; i=i+2) x for x in [1..10] by 2 # => [ 1, 3, 5,