#javascript
#javascript
Вопрос:
Я решал задачу Эйлера № 48 и пришел к решению- . В основном я пытался вычислить собственные полномочия, сохраняя их цифры в массиве. Ссылка на вопрос https://projecteuler.net/problem=48 Однако я получаю неожиданную ошибку. Отображаемое сообщение об ошибке Uncaught error b is undefined
function selfPower(n,b)
{
var carry,i=1,j;
b[0][n-1]=1;
while(i<=n)
{
carry=0,j=0;
while(b[j])
{
b[j][n-1]=b[j][n-1]*n carry;
carry= Math.floor(b[j][n-1]/10);
b[j][n-1]%=10;
j ;
}
while(carry>0){
b[j][n-1]=carry;
carry=Math.floor(b[j][n-1]/10);
b[j][n-1]%=10;
j ;
}
i ;
}
}
var a=[][1000];
var str="";
for(i=1;i<=1000;i ){
selfPower(i,a);
}
for(i=0;i<10;i ){
for(j=1;j<1000;j )
a[i][0] =a[i][j];
a[i][0] =carry;
carry=Math.floor(a[i][0]/10);
a[i][0]%=10;
str=a[i][0] str;
}
document.getElementById('output').textContent= str;
Однако я получаю сообщение об ошибке в строке № 4, дающее Uncaught Typeerror: b is undefined.
Как я могу это решить?
Комментарии:
1. Каким вы ожидаете результата
[][1000]
?
Ответ №1:
Их недостаток в том, как массив был инициализирован в приведенном выше коде
Если вы хотите иметь доступ к матрице, например, matrix[i] [j]
Я считаю наиболее удобным инициализировать его в цикле.
var matrix = [],
cols = 3;
//init the grid matrix
for ( var i = 0; i < cols; i ) {
matrix[i] = [];
}
это даст вам [ [], [], [] ]
таким образом, matrix [0] [0] matrix [1][0] возвращает undefined, а не ошибку «Uncaught TypeError: невозможно установить свойство ‘0’ для undefined»
Итак, если вы перепишете код, он будет
var a=[]
var i,j;
for(i=1;i<=1000;i ){
a[i-1]=[];
a[i-1][0]=1;
selfPower(i,a);
}
Это решит проблему