gpt4 book ai didi

javascript - 几乎相同的代码,但答案却截然不同

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:48:33 24 4
gpt4 key购买 nike

我正在用 JavaScript 编写一个程序,计算前 3 位数字之和等于后 3 位数字之和的 6 位数字的个数。所以我写了两种不同的解决方案来解决这个问题,尽管只有一个返回正确答案。
我还编写了一个函数 sumOfDigits(),它只是计算传递给它的数字的数字总和。这个函数没有写在这里,但它工作正常。


function count1() {
total=0;
for (i = 100000; i <= 999999; i+=1) {
part = i % 1000;
if ((sumOfDigits(i-part)) == ((sumOfDigits(part)))) {
total+=1;
}
} return total;
}

function count2() {
array = [];
for (i = 100000; i <= 999999; i+=1) {
part = i % 1000;
if ((sumOfDigits(i-part)) == ((sumOfDigits(part)))) {
array.push(i);
}
} return array;
}

count1() 函数无法正常工作并返回 28 作为答案,而返回数组的 count2() 函数返回长度为 50412 的数组,即正确答案。有人能告诉我为什么第一个功能不能正常工作吗?
count1 函数的截图。 A screenshot of the count1() function in action.

最佳答案

sumOfDigits() 的实现中是否使用了 total?我猜这两个函数都使用相同的全局 total

您应该在所有局部变量首次使用时使用 var 作为前缀,这样它们就不会被视为全局变量,例如:

var total = 0;

编辑:我刚刚确认了这一点。如果 sumOfDigits() 使用全局 total,则 count1() 返回 28。

关于javascript - 几乎相同的代码,但答案却截然不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20782242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com