我似乎不明白为什么函数在第一个for循环之后返回"sum“,而不是在函数的末尾。
var a = [
[1, 1, 1, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[1, 1, 1, 0, 0, 0],
[0, 0, 2, 4, 4, 0],
[0, 0, 0, 2, 0, 0],
[0, 0, 1, 2, 4, 0]
];
function hourglassSum(arr) {
var sum = 0;
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
var sumTemp = arr[i][j] + arr[i][j + 1] + arr[i][j + 2] + arr[i + 1][j + 1] + arr[i + 2][j] + arr[i + 2][j + 1] + arr[i + 2][j + 2];
if (!isNaN(sumTemp) && sumTemp > sum) {
sum = sumTemp;
}
}
document.write('Sum: ' + sum + '<br/>');
}
document.write('Sum: ' + sum + '<br/>');
}
hourglassSum(a);
发布于 2018-08-24 21:37:49
您的问题是,在调用时,您试图访问大于数组大小的数组索引:
var sumTemp = arr[i][j] + arr[i][j + 1] + arr[i][j + 2] + arr[i + 1][j + 1] + arr[i + 2][j] + arr[i + 2][j + 1] + arr[i + 2][j + 2];
因为您循环到数组的大小,然后调用j+1或j+2,它现在大于数组的大小并导致错误。
https://stackoverflow.com/questions/52005347
复制相似问题