【发布时间】:2021-12-03 04:24:41
【问题描述】:
我在 JS 中有这段代码
//param A : array of integers
//param B : array of integers
//return an integer
function doesitwork(A, B) {
if (A.length != B.length) {
return -1;
}
var i = 0;
var tank;
var count;
var johnny = true;
for (var j = 0; j < A.length; j++) {
count = 0;
tank = 0;
i = j;
johnny = true;
while (count < A.length && johnny == true) {
console.log(i);
console.log(A.length);
console.log(count);
console.log(johnny);
tank += A[i];
if (B[i] <= tank)
tank -= B[i];
else {
johnny = false;
}
count++;
i++;
if (i == A.length)
i == 0;
}
while (johnny == true) {
if (count == A.length)
return j;
}
}
return -1;
}
var A = [1, 2];
var B = [2, 1];
console.log(doesitwork(A, B));
我不明白的是,当我运行程序时,起初 count = 0,但是当我第一次进入 while 循环时,不是运行命令 count++ 并将其值更改为 1,而是' t运行它,保持计数为0,然后在重新进入循环后更改它。
TLDR:While 循环运行两次,其中一个变量保持相同的值,而不是像循环中的一行所建议的那样更改它。
【问题讨论】:
-
您如何确定您报告的行为?您能否提供示例输入,以及显示此操作的输出正在执行您所说的操作?另外,你知道
i == 0;什么都不做吗? -
如果
johnny是true,并且count不等于A.length,则您有一个无限循环。 -
你的代码格式真的很难阅读。我使用了 snipplet 和它的 format 函数让它可读和可运行
-
进入for,进入while,返回for,进入while,再次循环进入while,退出。
-
每次返回 for 循环时它都会重置.....设置断点并使用调试器遍历代码。
标签: javascript loops while-loop